Java-Set集合的使用(上)

1、Set 集合的介绍

 Set集合的特点

  1、无索引,也就意味着没有基于索引操作集合的方法

  2、唯一,元素不允许重复

 Set集合的常用实现类

  • HashSet
  • LinkedHashSet
  • TreeSet

不同的Set集合的实现类有不同的特点,因此有着不同的应用场景。

Set接口继承Collection接口,它没有在Collection接口上增加额外的方法。

因此学习Set集合重点掌握不同实现类的特性,前提是掌握了Collection接口方法的使用。

2、HashSet集合的使用

HashSet实现了Set接口,HashSet的特性如下

1、无索引,也就意味着没有基于索引操作集合的方法

2、唯一,元素不允许重复

3、存取无序,存储和取出来的顺序不一致

 

HashSet底层的数据结构是哈希表,不同的JDK版本,哈希表的组成结构是不一样的

java8以前哈希表由数组加链表组成

Java8以后链表元素的数量如果没有超过8个,那么还是由数组加链表组成,如果链表元素的数量超过了8个,哈希表由数组+链表+红黑树组成。

 

3、Set集合保持唯一性的原理

Set集合保持唯一性依靠集合存储对象的两个方法:HashCode()方法和equals()方法,这两方法是来自于Object类,因此集合的元素都有着两个方法。

  • hashCode() 根据对象的地址计算哈希值
  • equals() 判断对象的地址是否相等

Set集合保持唯一性的流程

 1、当Set集合添加元素的时候,会调用该元素的hashCode()方法来计算哈希值,判断该哈希值对应的位置上是否有哈希值相同的元素,如果该位置上没有哈希值相同的元素,那么就将该元素存储到Set集合中,如果该位置上由哈希值相同的元素,那么就会产生哈希冲突。

 2、如果产生了哈希冲突,然后调用元素的equals()方法和该位置上所有的元素进行比较,如果比较完成后该位置上的任意一个元素和要存储的元素相等,那么就不存储,否则就存储。

 

posted @ 2022-05-06 16:40  刘靖凯  阅读(109)  评论(0编辑  收藏  举报