Set
特点 无序 无下标 不可重复
Set没有提供特殊的方法全部继承与Collection
HashSet的踢重原理
1,给HashSet中存储对象时,会默认调用对象的hashcode方法,获取其值,如果该值与集合中其他对象的 值相同,那么就认为重复,不相同认为不重复
2,不重复直接存储,如果存储的对象的hashcode值与已经在集合中的对象hashcode值重复,调用对象的 equals方法与重复的对象进行比较
3,如果equals也相同,认为重复,此时不在给集合中存储.如果不相同,那么存储到集合中
LinkedHashSet
LinkedHashSet是HashSet的子类,所在存储原理一致
注意:LinkedHashSet的数据结构比HashSet多了一个链表,该链表是用于记录存储数据的顺序,所以 LinkedHashSet是有序的
TreeSet
数据结构:红黑树+自定义
存储的要求:
方案1,指定比较器
方案2,存储的数据拥有比较性 如果以上两个方案都没有使用,那么给TreeSet中存值会报错
方案1: 创建TreeSet对象时,指定比较器 重写compare方法
原理: 每次存入对象时,使用对于集合中原有的对象进行比较(使用的是compare方法) 如果集合中没有值,那么自己与自己比,比完后存入 如果集合中已经存在数据,那么使用本次存入的数据与集合中已有的数据一一比较 如果有相同就证明重复,剔重,并结束比较 如果没有相同的数据,那么将本次存入的数据存储到集合中
方案2: 创建TreeSet存储的对象所属的类要拥有比较性 让存储的对象所属的类实现实现Comparable接口
作业
1,如:图书管理系统录入图书信息 将书籍信息存入到集合中,如果属性值都相同认为重复,不在存储 如果相同提示已经录入 书籍信息: 书名 作者 出版社 价格 编号 出版时间
2,如:学生管理系统 将学员信息存入到集合中,如果属性值都相同认为重复,不在存储
3,录入学员信息要求,按照学号排序
4,使用TreeSet存入以下信息 张三 男 18 220901 李四 女 21 220905 王五 男 28 220903 小花 女 19 220902 老王 男 25 220908 要求:使用比较器与比较性两种方式
5,创建书籍对象,按照出版时间排