网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

HashSet的工作原理

我们先看一下HashSet和TreeSet在整个集合框架中的位置。他们都实现了Set接口。他们之间的区别是HashSet不能保证元素的顺序,TreeSet中的元素可以按照某个顺序排列。他们的元素都不能重复。

成都创新互联成立于2013年,先为卢龙等服务建站,卢龙等地企业,进行企业商务咨询服务。为卢龙企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

HashSet的工作原理

先来看一下HashSet:

 

public static voidmain(String[] args) {
    Set set =newHashSet();
    set.add("张三");
    set.add("李四");
    set.add("王五");
    System.out.println(set);

System.out.println(set.size());

          System.out.println(set.contains("张三"));
}

打印输出的顺序是是: [李四, 张三, 王五]

可以看出和存进去的顺序不一致。

我们先看一下  Set set =newHashSet();

这行代码创建了一个HashSet,构造函数如下:

publicHashSet() {
   map=newHashMap<>();
}

可以看到实际上是创建了一个HashMap的对象。没错,HashSet底层就是一个HashMap.

HashSet的工作原理

再来看一下这行代码:set.add("张三");

public booleanadd(Ee) {
   returnmap.put(e,PRESENT)==null;
}

非常的简单,就是调用了一下HashMap的put方法对元素进行插入。

这里的PERSENT是什么呢?继续顺藤摸瓜:

private static final Object PRESENT = new Object();
原来就是一个普通的Object对象前面用static final修饰说明是不可变的。

HashSet的工作原理

继续添加:set.add("李四");

HashSet的工作原理

可以看出来HashMap的key分别为”张三”,”李四”,“王五”, 因为HashSet用不到value,他们的value都是一样的指向同一个地方。继续往下看:System.out.println(set.size());

public intsize() {
   returnmap.size();
}

也是调用的HashMap的size方法。

System.out.println(set.contains("张三"));

public booleancontains(Object o) {
   returnmap.containsKey(o);
}

同样调用的HashMap的contains方法。


分享文章:HashSet的工作原理
当前URL:http://bjjierui.cn/article/iesjhg.html

其他资讯