码迷,mamicode.com
首页 > 其他好文 > 详细

HashSet和TreeSet的区别

时间:2017-09-21 17:53:49      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:key   treemap   有序   哈希   bool   his   treeset   return   mod   

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的区别

标签:key   treemap   有序   哈希   bool   his   treeset   return   mod   

原文地址:http://www.cnblogs.com/zhangyongsic/p/7569336.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!