JDK的Set源码分析

这篇文章主要介绍“JDK的Set源码分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JDK的Set源码分析”文章能帮助大家解决问题。

创新互联建站专注于企业全网营销推广、网站重做改版、市中网站定制设计、自适应品牌网站建设、H5网站设计商城网站建设、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为市中等各大城市提供网站开发制作服务。

首先,我们看一下HashSet

  1.  private transient HashMap<E,Object> map;

  2.     // Dummy value to associate with an Object in the backing Map

  3.     private static final Object PRESENT = new Object();

可见,他适配了HashMap,那么他的功能是如何委托给HashMap结构的呢?

  1.  public boolean add(E e) {

  2.     return map.put(e, PRESENT)==null;

  3.     }

在hashMap中,我们大多数时候是用value,但是在set的时候,却很好的利用了已有类HashMap,他利用了HashMap的key的唯一性来保证存储在Set中的元素的唯一性;

private static final Object PRESENT = new Object();

是这个HashMap所有key的value,他只是一个形式,而我们真正的数据是存在在key中的资源;

我们最后拿到的迭代器也是:

  1.   public Iterator<E> iterator() {

  2.     return map.keySet().iterator();

  3.     }

map的keySet的迭代器;

同理,我们看看LinkedhashMap;

  1.  public LinkedHashSet(int initialCapacity, float loadFactor) {

  2.         super(initialCapacity, loadFactor, true);

  3.     }

  4.     /**

  5.      * Constructs a new, empty linked hash set with the specified initial

  6.      * capacity and the default load factor (0.75).

  7.      *

  8.      * @param   initialCapacity   the initial capacity of the LinkedHashSet

  9.      * @throws  IllegalArgumentException if the initial capacity is less

  10.      *              than zero

  11.      */

  12.     public LinkedHashSet(int initialCapacity) {

  13.         super(initialCapacity, .75f, true);

  14.     }

  15.     /**

  16.      * Constructs a new, empty linked hash set with the default initial

  17.      * capacity (16) and load factor (0.75).

  18.      */

  19.     public LinkedHashSet() {

  20.         super(16, .75f, true);

  21.     }

调用了父类的构造函数;构造函数如下:

  1.     HashSet(int initialCapacity, float loadFactor, boolean dummy) {

  2.     map = new LinkedHashMap<E,Object>(initialCapacity, loadFactor);

  3.     }

生出了LinkedHashMap;

同理,我们一样可见到treeMap的实现:

  1.     private transient NavigableMap<E,Object> m;

  2.     // Dummy value to associate with an Object in the backing Map

  3.     private static final Object PRESENT = new Object();

关于“JDK的Set源码分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注创新互联行业资讯频道,小编每天都会为大家更新不同的知识点。

网站题目:JDK的Set源码分析
URL标题:https://www.cdcxhl.com/article0/jiedio.html

成都网站建设公司_创新互联,为您提供手机网站建设定制开发网站营销网站制作网站收录域名注册

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

h5响应式网站建设