java集合
石头dhf
三人行必有吾师!
展开
-
Java集合---ConcurrentHashMap原理分析
一、背景:线程不安全的HashMap 因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。 效率低下的HashTable容器 HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTable的同步方法时,其他...转载 2018-06-23 10:50:10 · 115 阅读 · 0 评论 -
HashSet集合解读
1、Hashset是基于依赖HashMap实现的,把元素作为key,默认object作为value形成键值对。所有Hashset是非线程安全的,元素不可以重复。public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializabl...原创 2018-07-10 12:01:18 · 183 阅读 · 0 评论 -
stack集合分析
1、stack继承Vector,实现了LIFO算法的栈数据结构。class Stack<E> extends Vector<E> {2、push入栈,放到数组最后。 public E push(E item) { addElement(item); return item; }3、pop出栈:获取元素总长度,通过peek取数组尾部元素,然后再通过remove移除...原创 2018-07-10 11:49:38 · 496 阅读 · 0 评论 -
Vector集合源码解读
1、Vector和Arraylist一样也是基于数组的,但是它是安全的。2、默认创建大小为10个数组,可以指定初始数组大小和扩容步长大小。3、如果指定扩容步长大小,在添加元素时扩容为步长大小,否则扩容为原来大小的2倍。4、Vector是线程的安全的,方法通过synchronized修饰。...原创 2018-07-10 11:35:41 · 105 阅读 · 0 评论 -
集合Arraylist分析
arrylist采用数组存储元素。默认初始化为10长度的数组。在添加元素时先判断是否需要扩容,扩容为 (old*3)/2+1在遍历元素时,首先创建iterator会保存modcount,在获取next元素时会提交现在的modcount和原来记录的是否相等,如果不相等,抛出ConcurrentModificationExceptinon异常。arrylist是非线程安全的。...原创 2018-07-10 11:23:36 · 111 阅读 · 0 评论 -
LinkedList源码解析
双端链表,可以正向和反向遍历链表,提升了遍历的效率。可以实现队列和栈的数据结构。1、在取链表中固定位置中的一个值时,因为链表结构需要进行遍历。会分析要取的位置在链表的前半部分还是后半部分??如果前半部分通过head进行往后遍历,如果为后半部分通过尾部向前进行遍历。这样提高了效率。 private Entry<E> entry(int index) { if (ind...原创 2018-07-10 10:52:35 · 103 阅读 · 0 评论 -
Java集合:HashMap源码剖析
转载:http://www.cnblogs.com/ITtangtang/p/3948406.html一、HashMap概述 HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 值...转载 2018-06-23 11:24:27 · 112 阅读 · 0 评论 -
ConcurrentHashMap是弱一致的
本文将用到Java内存模型的happens-before偏序关系(下文将简称为hb)以及ConcurrentHashMap的底层模型相关的知识。happens-before相关内容参见:JLS §17.4.5. Happens-before Order、深入理解Java内存模型以及Happens before;ConcurrentHashMap的详细介绍以及底层原理见深入分析ConcurrentH...转载 2018-01-27 16:34:21 · 705 阅读 · 0 评论 -
Java集合---面试题
HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入让这道题变得更加复杂。让我...转载 2018-06-23 10:51:20 · 122 阅读 · 0 评论 -
TreeMap集合解析
1、TreeMap是一个支持排序的Map实现。要求其key实现Comparable接口或者创建自身时传入Comparable接口实现。内部Entry对象: static final class Entry<K,V> implements Map.Entry<K,V> { K key; V value; Entry<K,V> le...转载 2018-07-10 15:53:49 · 203 阅读 · 0 评论