当前位置: 首页 > news >正文

平面设计好的网站北京seo管理

平面设计好的网站,北京seo管理,重庆娱乐公司,淘宝店铺怎么上传自己做的网站转自:http://www.cnblogs.com/chenpi/p/5297472.html HashSet、LinkedHashSet、TreeSet 阅读目录 关于HashSet、LinkedHashSet、TreeSet类图关系源码分析补充一句 以下内容基于jdk1.7.0_79源码; 关于HashSet、LinkedHashSet、TreeSet Set接口的实现类&am…
转自:http://www.cnblogs.com/chenpi/p/5297472.html

HashSet、LinkedHashSet、TreeSet

以下内容基于jdk1.7.0_79源码;

关于HashSet、LinkedHashSet、TreeSet

Set接口的实现类,最大特点是不允许出现重复元素;

HashSet:基于HashMap实现,一个性能相对较好的Set;

LinkedHashSet:基于LinkedHashMap实现,一个保存了插入顺序的Set;

TreeSet;基于TreeSet实现,一个实现了排序的Set;

类图关系

源码分析

Set接口的实现类相对来说都比较简单,如果熟悉HashMap、LinkedHashMap、TreeMap源码的话,HashSet、LinkedHashSet、TreeSet的代码会很好理解,因为基本上都是调用对应Map的方法来实现的;

HashSet部分源码

复制代码
package java.util;
public class HashSet<E>extends AbstractSet<E>implements Set<E>, Cloneable, java.io.Serializable
{static final long serialVersionUID = -5024744406713321676L;//存储元素的HashMapprivate transient HashMap<E,Object> map;// 一个冗余的空对象,用于在Map中存放key对应的value,Map中所有的键值对的value都是同一个空Object的引用private static final Object PRESENT = new Object();/*** 构造方法,直接生成一个对应的HashMap*/public HashSet() {map = new HashMap<>();}//省略一部分代码.....//返回HashMap的key迭代器,HashSet中的元素实际上就是HashMap中的key元素public Iterator<E> iterator() {return map.keySet().iterator();}//调用HashMap的put方法,将e-PRESENT键值对对象put到map中public boolean add(E e) {return map.put(e, PRESENT)==null;}//省略一部分代码.....
}
复制代码

LinkedHashMap源码,如下,代码很少,主要是构造方法,

根据传入的参数,调用父类HashSet的HashSet(int initialCapacity, float loadFactor, boolean dummy)方法,生成一个LinkedHashMap对象存储集合元素:

复制代码
package java.util;
public class LinkedHashSet<E>extends HashSet<E>implements Set<E>, Cloneable, java.io.Serializable {private static final long serialVersionUID = -2851667679971038690L;public LinkedHashSet(int initialCapacity, float loadFactor) {super(initialCapacity, loadFactor, true);}public LinkedHashSet(int initialCapacity) {super(initialCapacity, .75f, true);}public LinkedHashSet() {super(16, .75f, true);}public LinkedHashSet(Collection<? extends E> c) {super(Math.max(2*c.size(), 11), .75f, true);addAll(c);}
}
复制代码

HashSet中生成LinkedHashMap的构造方法HashSet(int initialCapacity, float loadFactor, boolean dummy)

    HashSet(int initialCapacity, float loadFactor, boolean dummy) {map = new LinkedHashMap<>(initialCapacity, loadFactor);}

TreeSet部分源码

有一个NavigableMap类型的Map和一个空对象,NavigableMap会在构造方法里被赋成一个TreeMap对象,PRESENT是所有键值对中value对象的同一个引用;

复制代码
public class TreeSet<E> extends AbstractSet<E>implements NavigableSet<E>, Cloneable, java.io.Serializable
{/*** TreeMap对象*/private transient NavigableMap<E,Object> m;// 空对象,所有Map键值对中value对象的同一个引用private static final Object PRESENT = new Object();
复制代码

构造方法,可见TreeSet是基于TreeMap实现的:

复制代码
    TreeSet(NavigableMap<E,Object> m) {this.m = m;}
public TreeSet() {this(new TreeMap<E,Object>());}
复制代码

再看其它TreeSet中方法的源码,基本都是通过调用TreeMap的方法实现;

复制代码
 //省略部分代码。。。public NavigableSet<E> descendingSet() {return new TreeSet<>(m.descendingMap());}public int size() {return m.size();}
public boolean isEmpty() {return m.isEmpty();}
//省略部分代码。。。
复制代码

补充一句

学好Set集合的关键是把Map学好。

 


@author   风一样的码农
@blog_url http://www.cnblogs.com/chenpi/
分类: JAVA 集合
标签: JAVA
好文要顶关注我 收藏该文
风一样的码农
关注 - 9
粉丝 - 166
+加关注
0
0
«上一篇:EnumMap
»下一篇:基本线程机制
posted @ 2016-03-20 12:34 风一样的码农 阅读(189) 评论(0)编辑 收藏
http://www.lbrq.cn/news/2344249.html

相关文章:

  • 定制企业网站开发公司seo联盟
  • 个人网站建设视频教学北海百度seo
  • 如何做网站淘宝客餐饮营销策划与运营
  • 网站备案的坏处北京网站seo优化推广
  • 中国和城乡建设部网站首页佳木斯seo
  • 建邺区住房 建设 网站怎么推广自己的网站?
  • 目前电商平台排名网站seo优化效果
  • 网站搭建与网站建设搜索引擎营销方法有哪些
  • 做视频网站好做吗aso优化服务
  • 网站建设怎么弄建站服务
  • 广州可以做票务商城的网站公司百度站长收录
  • 互助县公司网站建设客户关系管理系统
  • 免费个人手机网站关键词优化推广策略
  • 新浪做网站/谷歌seo怎么优化
  • 汕头模板网建站/搜索推广营销
  • 温州做美食网站/网络推广方法有哪几种
  • seo擦边球网站/广告公司职位
  • 网站建设社会实践成果/安徽建站
  • 富顺做网站/百度广告官网
  • 网站开发 动易/安卓优化
  • 长春网络建站/seo外链资源
  • 网站图怎么做会高清图片/百度小说排行榜2020
  • 简繁英3合1企业网站生成管理系统/怎样在百度上做广告
  • 广州做网站 timhi/广告安装接单app
  • 黔东网站建设/十大洗脑广告
  • 桂平逗乐游戏招聘网站开发/拉新app推广接单平台
  • 网站建设摘要/优化网站排名
  • 网站建设与seo论文/丁的老头seo博客
  • 学做网站的视频/镇江网站定制
  • 庆阳定制网站/淘宝补流量平台
  • 如何卸载SQLServer
  • docker 方式gost代理搭建以及代理链实施
  • docker搭建freeswitch实现点对点视频,多人视频
  • 【Java笔记】七大排序
  • Linux操作系统之信号:信号的产生
  • 基于Hadoop的竞赛网站日志数据分析与可视化(上)