Java集合类-Set

  1. 为什么会有泛型
    早起的object 类型可以接收任意的对象类型, 但是在实际的使用中, 会有类型转换的问题, 也就存在着隐患, 所以java 提供了泛型来解决这个安全问题

如何使用泛型

没使用泛型报错的情况
在这里插入图片描述

使用泛型
1.7 以后 右边的泛型可以不指定, 与左边一致
在这里插入图片描述

如果泛型不明确指定, 默认是Object 类型
泛型值存在于编译时期为了确保强制转换不出错。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

set 接口概述

不包含重复元素的集合, 不能通过索引值操作元素
在这里插入图片描述
主要实现类:
1.HashSet 类概述(无序性, 不可重复性 底层结构是数组加链表)
不保证set 的迭代顺序(无序性, 不等于随机性, 存储的顺序并非按照数组索引的顺序添加, 是hash 值%16 算的数组下标)

特别是他不保证该顺序恒久不变(存入和取出的顺序不一致)

HashSet 如何保证元素唯一性
底层数据结构式hash 表(元素是链表的数组)
哈希表依赖于哈希值存储
添加功能底层依赖的两个方法
int hashCode()
boolean equals(object obj)

自动去重
去重原理:set 集合内部都是通过哈希表的结构去重, 依赖存储对象元素的hashcode 和equals 方法
去重步骤:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
2. LinkedHashSet
. hashset 的子类LinkedHashset 可以保证存入和取出的顺序是一致的
实际上也是无序的, 但是在添加数据的同时, 每个数据还维护了2 个引用, 记录此时数据的前一个数据和后一个数据
优点, 对于频繁遍历的操作, 要优与hashset

  1. treeSet(有序, 不可重复)
    只能添加相同类的元素,同一类型的数据,可以按照指定类型排序
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41572697/article/details/89765408