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的区别的主要内容,如果未能解决你的问题,请参考以下文章

hashset和treeset区别

HashSet和TreeSet的区别

HashSet和TreeSet的区别

HashSet,TreeSet和LinkedHashSet的区别

Java——HashSet和TreeSet的区别

HashSet,TreeSet和LinkedHashSet的区别