java17天集合

发布于:2022-12-25 ⋅ 阅读:(412) ⋅ 点赞:(0)

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,创建书籍对象,按照出版时间排

本文含有隐藏内容,请 开通VIP 后查看