Java™对Set接口的Tutorial
https://docs.oracle.com/javase/tutorial/collections/interfaces/set.html
常用Set实现:HashSet TreeSet LinkedHashSet
HashSet
用hash table储存元素,性能高,不保证元素顺序
TreeSet
使用红黑树储存元素,根据元素值排序,String按字典顺序,Integer按数值顺序,效率HashSet稍慢
LinkedHashSet
链表结构的HashSet,能够保证添加的顺序
Set可以用来干嘛,把Collection中重复的元素剔除,比如有个Collection c,
Collection<T> cWithoutDuplicate = new HashSet<T>(c);
//剔除重复元素且保持顺序
Collection<Type> noDups = new LinkedHashSet<Type>(c);
Set的集合操作:包含 交 并 差 亦或
s1.containsAll(s2) //返回boolean,是否包含
s1.addAll(s2) //并
s1.retainAll(s2) //交集
s1.removeAll(s2) //差
以上操作都会在s1上操作,若要保留s1与s2需要复制一份再操作