//peek:检索头部元素但不会删除
//peekFist:头部不删除
//peekLst:尾部不删除
//poll:检索头部元素并且删除
//pollFist:头部并且删除
//pollLast:尾部并且删除
//push:压栈(添加到头部)
//pop:出栈(得到头部元素并且弹出)
要求
class Goods{
private Integer id;
private String name;
private double price;
private Date date;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
public class GoodsManagerSystem {
public static void main(String[] args) throws InterruptedException {
Deque deque=new LinkedList<>();
System.out.println(deque.size());
int i=0;
while(deque.size()<10){
i++;
Goods good=new Goods();
good.setId(i);
good.setName("物品"+i);
good.setPrice(i*10);
//获得当前时间
Date date=new Date();
//获得时间毫秒
Long l=date.getTime();//后期针对毫秒数可以进行排序
good.setDate(date);
//添加到队列中
deque.offer(good);
Thread.sleep(1000);//作用:每1000毫秒执行一次
System.out.println("商品"+good.getName()+"正在入库...");
}
Goods g=deque.poll();
System.out.println("仓库已接近临界点+"+
g.getName()+"还未被取走");
}
}
ArrayList----有序可重复,有下标,可以在中间进行删除,修改添加,查询.删除和修改的效率低,查询遍历效果好,
主要原因它的结构是数组的底层
LinkedList---删除和修改的效率高,但是查询效率低,需要逐个遍历,主要是因为链表的结构
Deque--------双端队列,可以前后进行,添加,首尾查询,删除,
add() addLast addFirst offer.....element
poll:移除首项元素并且删除,返回当前元素对象
peek:得到首项元素但不删除
包含可以使用栈结构的方法push,pop
Queue--------单向队列,可以进行,添加单方向添加,查询,删除
区别于Deque,无push和pop方法
并且只有六个方法:add() element() offer() peek() poll() remove()
1.重写对象的comparable接口后
//大于0:一般和默认的自然排序一致,升序
//小于0:相反,降序
//等于0:当两个对象需要比较的数据一致,以插入顺序为准
2.当我们需要临时修改排序规则时,直接在比较方法中使用匿名内部类的方式来规定排序规则,一般在排序规则多变的时候建议使用
//定义map时,K的hashcode一定要重写!
//K的hashcode值决定了存放位置,以及去重等,,,
//建议equals也重写
public class ContainsKeyTest {
public static void main(String[] args) {
String s="dfafdjkhalfkhdk,l";
//去空格,或者其他符号,比如逗号之类的
s=s.replaceAll("[^a-zA-Z]+", "");
//Map<字符,字符的个数>
Map map=new HashMap<>();
char[] ch=s.toCharArray();
for(int i=0;i