Set
来源:互联网 发布:网络课件设计师工资 编辑:程序博客网 时间:2024/05/24 06:36
一开始有看源码的时候,最先看的是set,点进源码之后才看到,set内部是用map实现的,花了几天时间看了集中map源码,看完之后也会忘,但是还是有很大收获,读源码的道路还是要继续下去。
HashSet
HashSet继承了AbstractSet,实现了Set、Cloneable、Serializable接口。
HashSet内部的实现方式是HashMap
public HashSet() { map = new HashMap<>(); }
但是set只有value,没有key,所以用了一个final类型的Object作为value
private static final Object PRESENT = new Object();
对set的操作过程都是调用hashMap的方法。
LinkedHashSet
LinkedHashSet继承HashSet,实现了Set、Cloneable、Serializable接口。
LinkedHashSet内部也没有特别的方法,直接使用了父类HashSet的三个参数的构造方法方法
HashSet(int initialCapacity, float loadFactor, boolean dummy) { map = new LinkedHashMap<>(initialCapacity, loadFactor); }
也就是说,LinkedHashSet内部是以LinkedHashMap实现的。
TreeSet
TreeSet继承AbstractSet,实现了NavigableSet、Cloneable、Serializable接口。
TreeSet内部使用了TreeMap实现
public TreeSet() { this(new TreeMap<E,Object>()); }
总结
- HashSet内部通过HashMap实现,具有HashMap的性质。
- LinkedHashSet内部通过LinkedHashMap实现,具有LinkedHashMap的性质。
- TreeSet内部通过TreeMap实现,具有TreeMap性质。
JDK版本1.8.0_92。
阅读全文
0 0
- set /?
- Set
- set
- set
- set
- Set
- set
- Set
- Set
- set
- set
- Set
- set
- Set
- set
- Set
- set
- Set
- 如何优化高流量站点的nginx和php-fpm的几个方面
- 浅谈Link-Cut-Tree([林可砍树]LCT动态树)附例题 Hdu4010
- HDU 1789 Doing Homework again
- hss log
- Classic Stack Based Buffer Overflow
- Set
- mongoDB 详解 一、mongoDB基础知识与基本数据类型
- 判断1000-2000年之间的闰年
- android recycleview刷新之后再最后一条
- asp.net mvc5 Autofac 依赖注入
- CSS入门学习
- HDU5826 physics
- 使用POI生成动态多行表头
- 关于多线程中的安全问题