首页 > 其他 > 详细

HashSet源码分析

时间:2019-11-18 21:51:04      阅读:82      评论:0      收藏:0      [点我收藏+]

1. HashSet是使用HashMap来实现的

public HashSet() {
    map = new HashMap<>();
}

private transient HashMap<E,Object> map;  

// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();   //虚拟值,用来表示hashMap中的value值,在set中的值都是以key的形式存储在hashMap中
public boolean add(E e) {       //add()方法将元素作为key,并以PRESENT为value存入HashMap中
        return map.put(e, PRESENT)==null;
    }

2. 总结

  (1)由于在hashMap中key不可以重复所以HashSet中的元素不可重复。

  (2)同理hashMap中允许key为null,因此HashSet中的key也可以是null。

  (3)LinkedHashSet是使用LinkedHashMap实现的,原理相似。

  (4)TreeSet是使用NavigbleMap来实现的,原理同上。

HashSet源码分析

原文:https://www.cnblogs.com/liwangcai/p/11884785.html

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