Set集合:
特点:无序;对象元素不重复。Set set=new HashSet();
Set<Student> set=new HashSet<Student>();
- 输出时乱序;
- 当Student类重写hashCode()/equals()(id)时,则按顺序输出;String 以ASCII码进行比较,返回差值;
LinkedHashSet
特性:唯一(不重复);有序(链表结构)。
SortedSet 接口---TreeSet 类(实现)
数字,汉字(字符)排序
对象比较:
- sid(唯一性)比较(实现Comparable-lang包);
- 姓名(sname)比较(实现Comparator-util包);
<1>实现Comparable
重写compareTo---结果:1(大于) 0(等于) -1(小于)
return this.sid-o.getSid();
this.sid>o.getSid() ?1:(this.sid==o.getSid() ?0:-1)
<2>(新类 类名:NameComparator实现类)实现Comparator---重写compare方法
结果:1(大于) 0(等于) -1(小于)
return o1.getSname().compareTo(o2.getSname());
*灵活运用:
int i=o1.getSname().compareTo(o2.getSname());
if(i==0)
return o1.getSid()-o2.getSid();
return i;
底层算法:Comparable (我与他)
Comparator(俩俩比较)
对象比较:
SortedSet<Student> ss=new TreeSet<Student>(new NameComparator(实现类)());
return 值(可升可降)
1(大于) 0(等于) -1(小于)(升==降(1=-1))
用LinkedList完成堆栈;
eg:private LinkedList<Object> lli=new LinkedList<Object>();//弹夹
push(Object obj){
lli.addFirst(obj);
};//装弹,无返回值addFirst();
pop(){
return lli.getFirst();
}; //开枪,返回子弹(元素,集合中删除)
size(){
return lli.size();
};//长度
MyStack ms=new MyStack();//弹夹
ms.push("a");
ms.push("b");
ms.push("c");
ms.push("d");
ms.push("e");
while(ms.size()!=0) {//判断是否System.out.println(ms.pop().toString());//出弹
}