容器
凌琅Zxin
这个作者很懒,什么都没留下…
展开
-
HashMap源码分析
转自https://blog.csdn.net/duoduo18up/article/details/795034631.HashMap定义/*基于Map接口实现,允许null值和null键。 * HashMap和Hashtable很相似,只是Hashtable是同步的,以及不能为null的键 * HashMap有两个重要参数,capacity和load factor 默认的load...转载 2019-03-10 22:26:32 · 208 阅读 · 0 评论 -
WeekHashMap
1.存储结构WeakHashMap 的 Entry 继承自 WeakReference。被 WeakReference 关联的对象在下一次垃圾回收时会被回收。WeakHashMap 主要用来实现缓存,通过使用 WeakHashMap 来引用缓存对象,由 JVM 对这部分缓存进行回收。private static class Entry<K,V> extends Wea...原创 2019-04-14 16:25:21 · 537 阅读 · 0 评论 -
LinkedHashMap
1.存储结构继承自 HashMap,因此具有和 HashMap 一样的快速查找特性。public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>内存维护了一个双向链表,用来维护插入顺序或者 LRU 顺序。/*** The head (eldest) of t...原创 2019-04-14 14:57:09 · 145 阅读 · 0 评论 -
ConcurrentHashMap
1.存储结构static final class HashEntry<K,V> { final int hash; final K key; volatile V value; volatile HashEntry<K,V> next;}ConcurrentHashMap 和 HashMap 实现上类似,最主要的差别是Concur...原创 2019-04-13 11:12:18 · 122 阅读 · 0 评论 -
LinkedList
1.概览基于双向链表实现,使用 Node 存储链表节点信息。private static class Node<E> { E item; Node<E> next; Node<E> prev;}每个链表存储了 first 和 last 指针:transient Node<E> first;transie...原创 2019-04-13 11:01:38 · 122 阅读 · 0 评论 -
Vector源码
1.同步它的实现与ArrayList 类似,但是使用了synchronized 进行同步。public synchronized boolean add(E e) { modCount++; ensureCapacityHelper(elementCount + 1); elementData[elementCount++] = e; return tru...原创 2019-04-12 17:33:35 · 112 阅读 · 0 评论 -
CopyOnWriteArrayList源码
1.读写分离写操作在一个复制的数组上进行,读操作还是在原始数组中进行,读写分离,互不影响。写操作需要加锁,防止并发写入时导致写入数据丢失。写操作结束之后需要把原始数组指向新的复制数组。public boolean add(E e) { final ReentrantLock lock = this.lock; lock.lock(); try { ...原创 2019-04-12 17:33:08 · 180 阅读 · 0 评论 -
ArrayList源码
1.概览public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable实现了 RandomAccess 接口,因此支持随机访问。这是理所当然的,因为ArrayList 是基于数组实现的。...原创 2019-04-12 17:24:01 · 127 阅读 · 0 评论 -
TreeMap源码
原博1.介绍所有已实现的接口:Serializable, Cloneable, Map<K,V>, NavigableMap<K,V>, SortedMap<K,V>public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap&l...转载 2019-03-21 14:29:41 · 132 阅读 · 0 评论 -
容器(Collection/Map)、容器中的设计模式
1.容器主要包括:Collection:存储着对象的集合 Map:存储着键值对(两个对象) 的映射表。1.1 CollectionSet List Queue1.1.1 SetTreeSet: HashSet LinkedHashSet对比: 基于 支持 时间复杂度 TreeSet 红黑树 有序性操作 O(logN)...原创 2019-04-11 23:02:09 · 281 阅读 · 0 评论 -
集合-2(Set(HashSet、TreeSet、LinkedHashSet)、List(ArrayList、LinkedList、Vector)、Map(HashMap、TreeMap...))
1.Set接口集合中的元素不能重复,所以存入Set的元素都必须定义equals()来确保对象的唯一性。无序、无索引1.1HashSet类实现了Set接口,此实现不是同步的。由哈希表支持。实际上是一个HashMap集合。不能保证迭代顺序和存储顺序一致。特别是它不保证该顺序恒久不变。保证元素唯一的方式:hashCode()和equals()(若为自定义类,需重写两个方法...原创 2019-03-09 21:24:00 · 603 阅读 · 1 评论 -
集合-1(Collection、迭代器、Collections、泛型)
1. CollectionCollection是整个集合框架的基础,作用只是提供维护一组对象的基本接口。1.1 创建集合父类引用指向子类对象Collection<元素类型> 变量名=new ArrayList<元素类型>();//只可存储<>指定的类型Collection 变量名=new ArrayList();//集合元素默认为O...原创 2019-03-09 17:08:12 · 346 阅读 · 0 评论 -
Hashtable源码分析
转自https://blog.csdn.net/duoduo18up/article/details/801670741.定义public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>,Cloneable,java.io.Serializable继...转载 2019-03-10 22:25:43 · 122 阅读 · 0 评论 -
集合对比
1. 初始容量CollectionSet:HashSet TreeSet LinkedListSetList:ArrayList 数组的默认大小为 10 LinkedListQueuePriorityQueueMapTreeMap HashTable 默认为11 负载因子:0.75 HashMap 不指明大小时,默认为16 负载因子...原创 2019-05-14 20:53:27 · 608 阅读 · 0 评论