集合Set
·确定性 ·互异性 ·无序性
HashSet、TreeSet、LinkedHashSet
HashSet
1.基于HashMap实现的,可以容纳null元素,不支持同步
2.通过Set set = Collections.synchronizedSet(new HashSet(...));可以支持同步
3.操作方法:
add(添加一个元素)、
clear(清除整个HashSet)、
contains(判定是否包含某个元素)、
remove(删除一个元素)、
size(大小)、
retainsAll(计算两个集合的交集)
LinkedHashSet
1.继承HashSet,也是基于HashMap实现的,可以容纳null元素,不支持同步
2.通过Set set = Collections.synchronizedSet(new LinkedHashSet(...));可以支持同步
3.方法和HashSet基本一致:
add(添加一个元素)、
clear(清除整个HashSet)、
contains(判定是否包含某个元素)、
remove(删除一个元素)、
size(大小)、
retainsAll(计算两个集合的交集)
4.通过一个双向链表维护插入顺序,即遍历的顺序和插入的顺序一致。
TreeSet
1.基于TreeMap实现的,不可以容纳null元素,不支持同步
2.通过SortedSet set = Collections.synchronizedSet(new TreeSet(...));可以支持同步
3.操作方法:
add(添加一个元素)、
clear(清除整个HashSet)、
contains(判定是否包含某个元素)、
remove(删除一个元素)、
size(大小)、
4.根据compareTo方法或指定Comparator排序
三种Set关于重复元素的判定:
HashSet, LinkedHashSet, TreeSet的元素都只能是对象
HashSet和LinkedHashSet判定元素重复的原则:
-判定两个元素的hashCode返回值是否相同,若不同,返回false;
-若两者hashCode相同,则判定equals方法,若不同,返回false; 否则返回true.
-hashCode和equals方法是所有类都有的,因为Object类有
TreeMap判定元素重复的原则:
-需要元素继承自Comparable接口
-比较两个元素的compareTo方法