![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
集合源码分析
薇薇
爱好网络技术
展开
-
集合源码分析之--Map--TreeMap
TreeMap为一个树形结构的MAP结合类结构public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, java.io.Serializable{}类属性//比较器private final Comparator<? super K> comparator//Entryprivate tra.原创 2020-12-23 16:50:26 · 83 阅读 · 0 评论 -
集合源码分析之--Map--LinkedHashMap
LinkedHashMap类图结构public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>{}//继承hashMap,具备hashMap所有的作用其中linkedHashMap为什么能够实现顺序//链表头transient LinkedHashMap.Entry<K,V> head;//链表尾transient LinkedHas.原创 2020-12-21 17:46:09 · 81 阅读 · 0 评论 -
集合源码分析之--Map--HashMap
HashMap类图结构引用参考https://blog.csdn.net/m0_37914588/article/details/82287191HashMap的类结构public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { }属性//序列号,序列化的时候使用。private static f原创 2020-12-21 13:53:24 · 83 阅读 · 0 评论 -
集合源码分析之--Map--AbstractMap
抽象MAP//定义抽象方法entrySet,交给子类实现//这样抽象类就可以使用此方法,做一些默认实现。但是entrySet由具体的子类实现public abstract Set<Entry<K,V>> entrySet()看看HashMap--entrySet实现例如://获取集合元素个数public int size() { return entrySet().size();}public boolean isEmpty() { retu原创 2020-12-20 20:15:11 · 68 阅读 · 0 评论 -
集合源码分析之--Map接口
1 什么是Java Map接口Map包含基于键的值,即包含键值对(key-value)。每个键和值对称为一个Entry。Map包含唯一的key。如果我们的需求是必须基于Key来搜索,更新或删除元素,则“Map”很有用。2 Java Map接口层次结构有两个在Java中实现Map的接口:Map和SortedMap,以及三个类:HashMap,LinkedHashMap和TreeMap。Java Map的层次结构如下:Map不允许重复的key键,但是您允许有重复的value值。HashM原创 2020-12-23 13:15:06 · 104 阅读 · 0 评论 -
集合源码分析之--HashSet--LinkedHashSet
* @see Collection* @see Set* @see HashSet* @see TreeSet* @see Hashtable类图结构(依赖)类结构public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, java.io.Serializable {}//Linked.原创 2020-12-20 15:49:12 · 92 阅读 · 1 评论 -
集合源码分析之--HashSet
HashSet类结构public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable{}成员变量//定义了一个hashMapprivate transient HashMap<E,Object> map;//空对象private static final Object PRESENT =原创 2020-12-20 15:39:00 · 110 阅读 · 0 评论 -
集合源码分析之--LinkedList
GLinkedList底层时基于链表结构LinkedList内部结构及属性public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable { transient int size;//元素个数 transient LinkedList.Node<E> fi原创 2020-12-18 16:28:50 · 75 阅读 · 1 评论 -
集合源码分析之--ArrayList
ArrayList类图结构需要查看Iterable顶层接口,点一下Iterable顶层接口分析Collection接口分析,点一下Collection接口分析AbstractCollection抽象类分析,点一下:AbstractCollection抽象类分析AbstractList抽象类分析,点一下:AbstractList抽象类分析类的结构public class ArrayList<E> extends AbstractList<E>原创 2020-12-17 16:10:21 · 75 阅读 · 0 评论 -
集合源码分析之--Vector
Vector类结构Vector类图结构1、先通过类图结构剖析每个接口里面的具体实现 vector类实现了一个可增长的对象数组。与数组一样,它包含了可以通过使用整数索引进行访问的组件。 但是,vector的大小可以根据需要来扩大或减小,以便于创建vector后添加和删除内容。 任何vector试图通过维护容量和容量增量来优化存储管理,它的容量总是至少与vector大小一样大; 通常它会更大,因为随着组件被添加到vector中,vector的存储随着容量增量大小来原创 2020-12-17 10:33:55 · 113 阅读 · 1 评论 -
集合源码分析之02-Collection02--01--AbstractList
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {拥有抽象类AbstractCollection的功能AbstractCollection源码//添加某个元素public boolean add(E e) { add(size(), e);//在集合的末尾添加 return true;}//提.原创 2020-12-16 14:59:12 · 90 阅读 · 0 评论 -
集合源码分析之02-Collection02--List
LIst为一个接口类,主要实现了Collection接口出了重新写了一些包含Collection方法外,还添加了一些额外的方法//添加所有在某个位置boolean addAll(int index, Collection<? extends E> c);default void replaceAll(UnaryOperator<E> operator) { Objects.requireNonNull(operator); final原创 2020-12-16 14:41:20 · 94 阅读 · 0 评论 -
集合源码分析之02-Collection01--AbstractCollection
public abstract class AbstractCollection<E> implements Collection<E> {抽象集合实现类--实现了Collection接口Collection接口源码分析AbstractCollection抽象类相关方法实现如上图//集合最大,int最大值-8,为什么呢?//因为一些vm在数组中保留一些头字。尝试分配更大的阵列可能会导致OutOfMemoryError:请求的数组大小超过VM限制,简要说明...原创 2020-12-16 14:19:38 · 109 阅读 · 0 评论 -
集合源码分析之-02--Collection
Collection集合接口为Iterable的实现类,类图结构1、继承了Iterable接口,让其具有获取迭代器的功能;Collection<E>集合接口方法说明,其中E为泛型类//返回集合的大小int size();//集合是否为空boolean isEmpty();//集合是否包含某个元素boolean contains(Object o);//获取一个迭代器Iterator<E> iterator();//转数组,返回数组对象Object[]原创 2020-12-16 11:20:41 · 87 阅读 · 0 评论 -
集合源码分析之-顶层接口--Iterable
Iterable为一个迭代器接口,主要获取一个迭代器;1、获取一个迭代器2、提供了2个接口默认实现,主要是lambda迭代器也是一个顶层接口,主要提供获取Iterator迭代器后,通过对集合实现迭代器模式迭代器设计模式参考例如在Vector中通过内部内去实现了private class Itr implements Iterator<E> {1、迭代器接口提供的方法进行实现,让Itr具有迭代器的功能;...原创 2020-12-16 11:13:31 · 113 阅读 · 0 评论