Set介绍

2021-10-22 15:14:08 浏览数 (1)

简介

下面是Java中的集合类的关系图。从中可以大致了解集合类之间的关系

Set

Set 和 List 一样,也是继承 Collection 接口, Set 不保存重复的元素,如果试图将相同对象的多个实例添加到 Set 中,那么不好意思,它会立马阻止。Set 判断两个对象是否相同,使用的是 equals() 方法,只要该方法的结果是 true,Set 就不会接收这个对象。

HashSet

代码语言:javascript复制
无参构造:
public HashSet() {
   map = new HashMap<>();
}

构造一个新的空 set,其底层 HashSet 实例的默认初始容量是 16,加载因子是 0.75。(当存储第13个元素时,则扩容。HashSet是由一个hash表来实现的,因此,它的元素是无序的。HashSet保证元素唯一性和hashcode方法以及equals方法相关。

  • 元素是无序的

LinkedHashSet

HashSet内部使用HashMap存储元素,所以HashSet遍历数据时是无序的,要保证插入的元素有序,我们可以使用LinkedHashSet。

LinkedHashSet继承自HashSet。查看LinkedHashSet的构造方法源码会发现内部都是调用父类的HashSet(int initialCapacity, float loadFactor, boolean dummy)方法。

  • 元素是有序的

TreeSet

TreeSet是由一个树形的结构来实现的,使用元素的自然顺序对元素进行排序,它里面的元素是有序的。

  • 元素是有序的

0 人点赞