Set
注意:没有提供任何特有的方法
HashSet
数据结构:
红黑树+哈希表+链表
判断元素重复:
1,先判断本次存入的对象的hashcode值是否与集合中已经存储的元素hashcode值是否一致
1.1:一致
2,使用存入的对象调用equals与集合中已经存储的元素一一比较
2.1:相同
不予存储
2.2:不相同
存入
1.2:不一致
直接存储
TreeSet
注意:
存储的数据要么拥有比较性,要么指定比较器
比较性:Comparable
提供的方法是:compareTo(E e);
比较器:Comparator
提供的方法是:compare(E e1,E e2);
判断元素重复:
使用比较器或比较性
比较性的使用:
注意:让存储的元素拥有比较器.所以是让存储的元素所属类实现该接口
当compareTo方法返回值为0表示相同,不予存储
当compareTo方法返回值为负数表示正在其比较值之前
当compareTo方法返回值为正数表示正在其比较值之后
比较器的使用:
注意:在创建TreeSet是传入比较器对象
当compare方法返回值为0表示相同,不予存储
当compare方法返回值为负数表示正在其比较值之前
当compare方法返回值为正数表示正在其比较值之后
分别使用比较性与比较器完成下面练习
1,公司对其员工进行排序
排序的要求:
年龄大的在前,小的在后
年龄相同时,薪资高的在前,薪资低的在后
如果年龄与薪资都形同,剔除
LinkedHashSet
特点:有序,但是不能重复
Collections
作用:集合操作的工具类
提供的方法:
addAll:给指定的集合中添加多个数据
1参:指定的集合
2~参:添加的元素
binarySearch:使用二分查找法,查询指定集合中的执行元素,返回值为负数证明数据不存在
1参:查询的集合
2参:查找的元素
sort(Collection<E> e);//排序
sort(Collection<E> e,Comparator<E> c);//排序,自定义比较器
reverse(List<?> list):翻转
总结
经验:
因为在开发中大量的使用场景是查询,所以ArrayList的使用频率极高
但是因为在校招与笔试中进行需要对数据进行排序或其他操作,所以此时Set的使用频率较高
剔重:请使用HashSet
排序:请使用TreeSet