Set接口

Set

Set是一个接口继承自Collection(集合)

Set是一种不包含重复的元素的无序Collection。
Set是接口,自身没有具体实现。

为了更加直接的了解,先看下实现的源码。
HashSet的内部其实使用到HashMap来实现对集合的操作
关于add操作:


[title] [] [url] [link text]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
private transient HashMap<E,Object> map;
/**
* Adds the specified element to this set if it is not already present.
* More formally, adds the specified element <tt>e</tt> to this set if
* this set contains no element <tt>e2</tt> such that
* <tt>(e==null&nbsp;?&nbsp;e2==null&nbsp;:&nbsp;e.equals(e2))</tt>.
* If this set already contains the element, the call leaves the set
* unchanged and returns <tt>false</tt>.
*
* @param e element to be added to this set
* @return <tt>true</tt> if this set did not already contain the specified
* element
*/
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}

这里的e为key,由于键值是唯一的,就防止了重复。(ps:有时间要去填HashMap的坑read the source code)