首页 > 其他 > 详细

HashSet和TreeSet的区别

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

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!