HashSet:
HashSet实现Set接口,由哈希表支持,它不保证set的迭代顺序,特别是它不保证该顺序永久不变,允许使用null
关键属性:private static final Object PRESENT = new Object();
无参构造器:
public HashSet() {
map = new HashMap<>();
}
add方法:
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
实际上就是将数据存储在HashMap中,key就是添加的内容,value是一个固定空对象
特点:
底层数据结构是哈希表,HashSet本质上一个没有重复元素的集合,他是通过HashMap实现的,底层有一个HashMap类型的成员变量map。
TreeSet:
基于TreeMap和NavigableSet实现的,使用元素的自然顺序进行排序,或者根据创建set时提供的Comparator进行排序,具体取决于使用的构造方法
无参构造:
public TreeSet() {
this(new TreeMap
}
add方法:
public boolean add(E e) {
return m.put(e, PRESENT)==null;
}
实际上就是将数据存储在TreeMap中,key就是添加的内容,value是一个固定空对象
