源码分析
文章平均质量分 76
不晓得X
NJU/预备役程序员
github:https://github.com/xjwhhh
公众号:【不知道别问我】
展开
-
Java集合类源码分析(一):Collcetion接口
Collection接口源码分析 int size(); 获取集合长度 boolean isEmpty(); 集合是否不包含任何元素 boolean contains(Object o); 集合是否含有该元素 (o==null?e==null:o.equals(e)) Iterator<E> iterator(); 返回了一个迭代器,这个迭代器的元素顺序是否有...原创 2018-05-14 21:23:25 · 705 阅读 · 0 评论 -
Java集合类源码分析(二):List接口
List接口源码分析 default void replaceAll(UnaryOperator<E> operator) { Objects.requireNonNull(operator); final ListIterator<E> li = this.listIterator(); while (li.hasNext()) { ...原创 2018-05-14 21:31:40 · 329 阅读 · 0 评论 -
Java集合类源码分析(三):AbstractList类
AbstractList源码分析 调用了void add(int index, E element),将元素增加在列表末尾。某些列表类会对增加的元素类型有所要求 public boolean add(E e) { add(size(), e); return true; } public E set(int index, E el...原创 2018-05-14 21:42:36 · 989 阅读 · 0 评论 -
Java集合类源码分析(四):ArrayList&LinkedList
ArrayList源码分析 ArrayList可以放入任何类型的元素 ArrayList不是同步的 /** * Default initial capacity. */ private static final int DEFAULT_CAPACITY = 10; /** * Shared empty array instance used for empty instances. ...原创 2018-05-14 22:00:06 · 255 阅读 · 0 评论 -
java集合类源码分析(五):Map接口
Map接口源码解析 Map接口的顺序与迭代器在集合角度上的顺序相同,有三种集合角度,分别是键的set,值的集合,和键值对的mappings 一些实现类,如TreeMap,对于顺序做了一些保证,另一些例如HashMap就没有 map不能以map做键,能以map做值,但这样的map对于equals和hashCode方法定义的不好 void putAll(Map<? extends K, ...原创 2018-05-14 22:28:01 · 243 阅读 · 0 评论 -
Java集合类源码分析(六):AbstractMap类
AbstractMap源码解析 提供了对Map接口大致性的实现 如果要实现一个不可修改的map,只需要继承此类并实现entrySet方法。这个set不支持add,remove,它的迭代器也不支持remove 如果要实现一个可修改的map,还要额外重写这个类的put,迭代器也要实现remove public boolean containsValue(Object value) { ...原创 2018-05-14 22:32:03 · 261 阅读 · 0 评论 -
Java集合类源码分析(七):HashMap&LinkedHashMap
HashMap源码分析 基于哈希表的map实现类,允许所有可选的map操作,也允许null作为键和值 与HashTable不同处在于HashMap不是同步的,允许null值 HashMap对于顺序也不做保证 相比于之前的版本,jdk1.8在解决哈希冲突时有了较大的变化,当数组总容量大于64且链表长度大于阈值(默认为8)时,将链表转化为红黑树,以减少搜索时间。原本Map.Entry接口的实现...原创 2018-05-14 22:36:58 · 212 阅读 · 0 评论 -
Java集合类源码分析(八):AbstractSet类
AbstractSet源码解析 本类没有重写任何AbstractCollection类的方法实现,只是增加了对于equals和hashCode的实现 equals,比较set与参数object是否相等 当且仅当参数object类型是set,两个set有相同长度,并且参数set的每个元素都存在于原set中 public boolean equals(Object o) { if (o...原创 2018-05-14 22:38:43 · 300 阅读 · 0 评论 -
Java集合类源码分析(九):HashSet&LinkedHashSet
HashSet源码解析 HashSet类实现了Set。对于迭代器的顺序不做保证,并且不保证随着时间变化,顺序会保持一致。HashSet类允许null元素 在元素均匀分布的情况下,HashSet对于一些基础操作,如add,remove,contains,size提供了常数时间的操作。用迭代器遍历set所需要的时间与HashSet元素总数和哈希桶的数量成正比。如果遍历速度很重要的话,不要把set的...原创 2018-05-14 22:41:08 · 238 阅读 · 0 评论