Java 集合-Set

本文将介绍 Java 集合中的 Set。

一、什么是 Set?

Set,用于储存一组唯一的、无序的对象。

二、Set 基于 Map

Set 往往是对 Map 的简单包装。

例如:

  • HashSet -> HashMap
  • LinkedHashSet -> LinkedHashMap
  • TreeSet -> TreeMap

以 HashSet 为例,摘抄代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Java.io.Serializable {

private transient HashMap<E,Object> map;

public HashSet() {
map = new HashMap<>();
}

// Dummy value to associate with an Object in the backing Map [假值,用于构成map中的键值对]
private static final Object PRESENT = new Object();

public boolean add(E e) {
return map.put(e, PRESENT) == null;
}

}

参考