Set是一种不包含重复的元素的无序Collection。
HashSet:
虽然Set同List都实现了Collection接口,但他们的实现方式却大不一样。List基于上都是Array为基础。但Set则是在
HashMap的基础上来实现的,这个就是Set和List的根本区别。HashSet的存储方式是把HashMap中的Key作为Set的对应存储项。
看看HashSet的add(Object obj)方法的实现就可以一目了然了。
java代码
public boolean add(Object obj){
return map.put(obj,PRESENT)==null;
}
这个也是为什么在Set中不能像在List中又重复的项的根本原因,因为HashMap的Key是不能有重复的。
LinkedHashSet:
HashSet的一个子类,一个链表。
TreeSet:
SortedSet的子类,它不同于HashSet的根本原因就是TreeSet是无序的。它是通过SortedMap来实现的。
Set总结:
1.Set实现的基类是Map(HashMap)
2.Set中元素是不能重复的,如果使用add(Object obj)方法添加已经存在的对象,则会覆盖前面的对象。