自学内容网 自学内容网

java学习--集合(大写五.5)

5.collection子接口:Set

在这里插入图片描述

5.1Set及其实现类特点

java.util.Collection:存储一个一个的数据
子接口:Set:存储无序的、不可重复的数据(高中学习的集合)

1)HashsSet主要实现类

底层使用的是HashMap,即使用数组+单向链表+红黑树结构进行存储。(jdk8中)

2)LinkedHashSet

是HashSet的字类,底层使用数组+单向链表+红黑树。在此基础上又添加了双向链表,用于添加元素的先后顺序,可以按照添加元素的先后顺序进行遍历,便于频繁的查询操作。

3)TreeSetshi

底层使用的是红黑树存储,可以按照添加的元素指定的属性大小顺序进行遍历。
红黑树是二叉树的一种.

5.2开发中的使用频率及场景

较List、Map来说,Set使用的频率较少
用来重复过滤数据

5.3Set中常用的方法

即Collection中声明的15个方法,没有新增方法

5.4Set中无序性、不可重复性的理解(以HashSet及其子类为例说明)

无序性:!=随机性。添加元素的顺序和遍历的顺序不一致是不是就是无序性呢?不是.
到底什么是无序性呢?与添加元素的位置元素有关,不像ArrayList一样是紧密排列的 ,这里根据添加的元素的哈希值,计算其在数组中的存储的位置,此位置不是依次排列,表现为无序性。

不可重复性:添加到Set中的元素是不能重复的。
比较的标准是:需,要判断hashCode的哈希值以及equals()得到的boolean型的结果,哈希值相同且equals返回true,则认为元素是相同的。

5.5添加到HashSet/LinkedHashSet中元素的要求

要求元素中的类要重写两个方法,hashCode()和equals()方法。同时要求hashCode()和equals()要保持一致性。我们在idea中自动生成这两个方法重写即可,即能两个保持两个方法的一致性。

5.6TreeSet的使用

5.6.1底层的数据结构

采用红黑树

5.6.2添加数据后的特点

可以按照添加元素的指定属性的大小顺序进行遍历

5.6.3向treeSet添加元素的要求

要求添加到TreeSet的元素必须是同一个类型的对象,否则会报ClassCastException
添加的元素需要考虑排序:自然排序和定制排序。

5.6.4判断数据是否相等的标准

5.7练习

5.7.1案例:定义方法如下:public static List duplicateList(List list)

要求:① 参数List中只存放Integer的对象
② 在List内去除重复数字值,尽量简单

5.7.2 案例:编写一个程序,获取10个1至20的随机数,要求随机数不能重复。并把最终的随机数输出到控制台。


原文地址:https://blog.csdn.net/m0_45283400/article/details/139876570

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!