HashSet和TreeSet的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashSet和TreeSet的区别相关的知识,希望对你有一定的参考价值。
HashSet 的底层实现是 HashMap
public HashSet() {
map = new HashMap<>();
}
public boolean add(E e) {
return map.put(e, PRESENT)==null; ===》所以可以放入null,但只能放入一个null,数据不能重复。
}
TreeSet 的底层实现是TreeMap
public TreeSet() {
this(new TreeMap<E,Object>());
}
public boolean add(E e) {
return m.put(e, PRESENT)==null; ===》同hashSet一样,添加的是map的key值, key值不能相同,所以数据不能重复。
}
HashMap 和TreeMap的区别。
HashMap是哈希表结构实现的,TreeMap是二叉树结构实现的。
HashMap 添加数据是没有顺序的添加
而TreeMap的添加数据则是
public V put(K key, V value) {
Entry<K,V> t = root;
if (t == null) {
compare(key, key); // type (and possibly null) check ====》实现Comparator 进行排序。
root = new Entry<>(key, value, null);
size = 1;
modCount++;
return null;
}
所以HashMap是无序的,而TreeMap是有序的存储数据的。
同理 HashSet是无序的,Tree是有序的。
以上是关于HashSet和TreeSet的区别的主要内容,如果未能解决你的问题,请参考以下文章