八十七、Set集合
不能存放重复的数据,存放的数据为无序(有自己的存放顺序)的;
HashSet/TreeSet 都不能存放重复的数据;
HashSet:存放null值,无序的,不能存放相同的值;
TreeSet:不可以存放null值,默认升序的,不能存放相同的值;
2种遍历方式
不能使用for循环,因为没有索引,并且是无序的。
Set集合判断数据是否重复:
hashcode()、equals(),都是Object的方法;
先判断hashcode()方法,再调用equals方法,两种方法都可以重写;
hashcode重写时尽量满足:每一个对象都有唯一的hashcode值,这样就可以提高程序效率(可以拥有相同的hashcode)。
八十八、Set–接口:无序的,不可重复的 ,2种遍历方式
HashSet–类:无序的,存入重复数据会被覆盖,并返回false,可以存放null值
TreeSet–类:按照数据的自然顺序(升序)存放,数据类型需要兼容(也可理解为相同的数据类型),不能存放null值
数字:从小到大顺序
英文:按照字典顺序
类:需要实现comparable接口或者自定义比较器comparator
Collection:集合的接口,List,Set
Collections :类,封装了很多对于集合数据操作的静态方法
Collections.sort(list, c);//给List集合排序的
八十九、TreeSet
TreeSet存放的数据默认按照升序排序
存放的数据必须时类型兼容的,不能存放null值
代码实现
Comparator c=new Comparator() {
@Override
public int compare(Object o1, Object o2) {
Student s1=(Student)o1;
Student s2=(Student)o2;
return s2.getName().compareTo(s1.getName());
}
};
TreeSet t1=new TreeSet(c);
t1.add(new Student("sa",15));