简介
下面是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是由一个树形的结构来实现的,使用元素的自然顺序对元素进行排序,它里面的元素是有序的。
- 元素是有序的