java:练习超市卖场
java:练习超市卖场
涉及到:大商品类,具体商品(以书为例),卖场类
Goods,Book,superMart,
商品类Goods:
public interface Goods {
//商品类
public String getName();
public int getCount();
public float getPrice();
}
书:
注意:复写hashCode,和equals是为了实现删除按钮
package abc;
public class Book implements Goods {
private String name;
private int count;
private float price;
public String getName() {
return name;
}
public Book() {
super();
}
public Book(String name, int count, float price) {
super();
this.name = name;
this.count = count;
this.price = price;
}
public void setName(String name) {
this.name = name;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
//复写hashCode,和equals是为了实现删除按钮
@Override
public int hashCode() {
return this.name.hashCode() +
new Integer(this.count).hashCode() +
new Float(this.price).hashCode();
}
//复写hashCode,和equals是为了实现删除按钮
@Override
public boolean equals(Object obj) {
if(obj == this)
{
return true;
}
if(!(obj instanceof Book))
{
return false;
}
Book b = (Book) obj;
if( b.name.equals(this.name) && b.count == this.count && b.price == this.price)
{
return true;
}else {
return false;
}
}
@Override
public String toString() {
return "书名:" + name + ", 数量:" + count + ", 价格:" + price ;
}
}
超级市场:
需要注意remove删除方法,必须在BOOK中定义相关的equals,hashCode方法才能删除
//删除,需要复写book里面的equals和hasCode
remove(Goods good)
package abc; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; public class SuperMark { private List<Goods> allGoods; public SuperMark()
{
this.allGoods = new ArrayList<Goods>();
} public void add(Goods good)
{
this.allGoods.add(good);
} //删除,需要复写book里面的equals和hasCode
public void remove(Goods good)
{
this.allGoods.remove(good);
} public List<Goods> search(String keyword)
{
List<Goods> temp = new ArrayList<Goods>();
Iterator<Goods> iter = this.allGoods.iterator();
while(iter.hasNext())
{
Goods g = iter.next();
if(g.getName().indexOf(keyword) != -1)
{
temp.add(g);
}
}
return temp;
} public List<Goods> getAllGoods()
{
return this.allGoods;
} }
测试:
public class Demo {
public static void main(String[] args) {
// TODO 自动生成的方法存根
System.out.println("gaga");
SuperMark sm = new SuperMark();
sm.add(new Book("java",5,10.4f));
sm.add(new Book("net",6,22.f));
sm.add(new Book("php",6,10f));
print(sm.search("j"));
}
public static void print(List all)
{
Iterator iter = all.iterator();
while(iter.hasNext())
{
System.out.println(iter.next());
}
}
}
java:练习超市卖场的更多相关文章
- 从小工到专家 ——读《Java程序员职场全攻略》有感
从小工到专家 ——读<Java程序员职场全攻略>有感 <Java程序员职场全攻略>是以故事的形式,向读者介绍Java程序员的职场经验.作者牛开复在北京从事软件开发,已经是一 ...
- java多线程实现卖票小程序
package shb.java.demo; /** * 多线程测试卖票小程序. * @Package:shb.java.demo * @Description: * @author shaobn * ...
- java 多线程之卖票两种方式
1.通过extends Thread /* 需求:简单的卖票,多个窗口同时买票 (共用资源) 创建线程的第二种方式:实现Runnable接口 步骤: 1,定义类实现Runnable接口 2,覆盖/重写 ...
- Java 集成 速卖通开发.
一.申请成为开发者 申请入口:http://isvhz.aliexpress.com/isv/index.htm 说明文档:http://activities.aliexpress.com/open/ ...
- Java 集成速卖通开发.
一.申请成为开发者 申请入口:http://isvhz.aliexpress.com/isv/index.htm 说明文档:http://activities.aliexpress.com/open/ ...
- Java之父职场路
Java之父——詹姆斯·高斯林出生于加拿大,是一位计算机编程天才.在卡内基·梅隆大学攻读计算机博士学位时,他编写了多处理器版本的Unix操作系统,是JAVA编程语言的创始人.1991年,在Sun公司工 ...
- 外贸开发,用java调用速卖通api第一步,token的获取。
第一步 定义速卖通api的常量 public String client_id; public String client_key; public String site; 第二步 获取登 ...
- 《Java程序员职场全攻略 从小工到专家》 - 书摘精要
(前言) 学习招式在次,提升内力才是最主要的: (P10) 选择一门编程语言,只是入门的途径.过分依赖编程语言,只会让自己成为代码高手,而不是开发大牛,要知道编程语言只是一种工具,更重要的是编程思想: ...
- 实验11——java线程模拟卖票
package cn.tedu.demo; /** * @author 赵瑞鑫 E-mail:1922250303@qq.com * @version 1.0 * @创建时间:2020年7月31日 下 ...
随机推荐
- JWT简介json web token bear token
, "exp": 1502360328,(相差3600s) "nbf": , "jti": "R0Gd00AvOW259LGo&q ...
- 【文献阅读】Deep Residual Learning for Image Recognition--CVPR--2016
最近准备用Resnet来解决问题,于是重读Resnet的paper <Deep Residual Learning for Image Recognition>, 这是何恺明在2016-C ...
- ORA-24408: could not generate unique server group name
一台新虚拟机,CentOS 6.5系统,用lnmp一键安装包安装好Nginx + PHP环境,再安装Oracle客户端,准备搭建PHP连接Oracle,访问oracle.php,测试连接Oracle的 ...
- mysql 存储过程初探
使用存储过程好处在于: 1.隐藏敏感的算法,避免被正常的开发人员看到,把业务逻辑隐藏在数据库中,而非程序代码里 2.简化应用代码程序,放到数据库里肯定就对程序代码简化有好处了 3.不同的开发语言都可以 ...
- solr原理
1.solr原理: 我本人的理解:solr是为解决高性能的全文索引而出现的,它将用户输入的关键字进行智能分解,分解成一个个词,过滤掉一些多余的停词及空格等,比如,“在”.“里面”.“也”.“的”.“它 ...
- iOS拓展:react-native创建工程的坑和解决方法
正文 首先,在创建工程之前,你需要有环境.这个网上很多,不赘述. 我们直接从创建工程开始,一步步记叙这过程. 坑一 一.打开终端,cd到你放文件的位置(我放在桌面了): yuqideMacBook-A ...
- <mark>元素----黄色背景
当需要引用其他人的内容,或者想要重点标注一段文本时可以使用<mark>元素.这样浏览器会给<mark>中的文本添加黄色背景. 效果图如下:原文:HTML5 - 使用<m ...
- 【BZOJ2790】[Poi2012]Distance 筛素数+调和级数
[BZOJ2790][Poi2012]Distance Description 对于两个正整数a.b,这样定义函数d(a,b):每次操作可以选择一个质数p,将a变成a*p或a/p, 如果选择变成a/p ...
- vue表单输入的绑定
vue的核心:声明式的指令和数据的双向绑定. 那么声明式的指令,已经给大家介绍完了.接下来我们来研究一下什么是数据的双向绑定? 另外,大家一定要知道vue的设计模式:MVVM M是Model的简写,V ...
- twig 截取字符串
<p>{{content|slice(0,100)}}</p> slice()截取content变量值,从0到100