HashSet是基于HashMap来实现的,操作很简单,更像是对HashMap做了一次“封装”,而且只使用了HashMap的key来实现各种特性,我们先来感性的认识一下这个结构:
其大致的结构是这样的:
1 private transient HashMap<E,Object> map; 2 3 // Dummy value to associate with an Object in the backing Map 4 // 在备份映射中与对象关联的虚拟值。 5 private static final Object PRESENT = new Object();
map是整个HashSet的核心,而PRESENT则是用来造一个假的value来用的。
2. 基本操作
1 public boolean add(E e) { 2 return map.put(e, PRESENT)==null; 3 } 4 5 public boolean remove(Object o) { 6 return map.remove(o)==PRESENT; 7 } 8 9 public boolean contains(Object o) { 10 return map.containsKey(o); 11 } 12 13 public int size() { 14 return map.size(); 15 }
基本操作也非常简单,就是调用HashMap的相关方法,其中value就是之前那个dummy的Object。所以,只要了解HashMap的实现就可以了。
浙公网安备 33010602011771号