1.HashSet怎么实现?
底层HashMap实现
HashSet set = new HashSet();
set.add("lyb");
//1.默认初始化构造new HashMap对象
public HashSet() {
map = new HashMap<>();
}
(1).add()方法怎么实现?
添加add()到HashSet的元素是作为HashSet的key(e)
所有的value共享同一个Object类型的常量对象PRESENT
put方法是Map方法
lyb
public boolean add(E e) {
lyb
return map.put(e, PRESENT)==null;
}
private static final Object PRESENT = new Object();//所有value共享
2.LinkedHashSet如何实现?
底层TreeMap实现
LinkedHashSet linkedHashSet = new LinkedHashSet();
linkedHashSet.add("lyb");
//默认无参构造方法初始化TreeMap对象
public TreeSet() {
this(new TreeMap<E,Object>());//调用其它类的构造方法
}
(1).add()方法怎么实现?
//add()方法TreeMap的key,所有的value共享同一个Object类型的常量对象(PRESENT)
public boolean add(E e) {
return m.put(e, PRESENT)==null;
}
3.TreeSet如何实现?
底层实现TreeMap
add方法和上面二个实现一样
TreeSet treeSet = new TreeSet();
treeSet.add("lyb");
//默认构造方法
public TreeSet() {
this(new TreeMap<E,Object>());
}