
java集合框架
qq_38068863
这个作者很懒,什么都没留下…
展开
-
ConcurrentHashMap源码解析
出现原因1hashmap在进行put时,会尝试扩容,扩容时,会使用rehash()这个函数,然后在重新将以前的节点前移到新的表中,可能会出现循环列表,a->b,b->a while(a.next!=null) a=b;原因是线程并发修改的导致的。使得cpu一直在空转,浪费了资源。2为什么不是用hashtable,hashtable的同步方法之间是互斥的,意思是 这个hashtab...原创 2019-02-23 16:13:04 · 161 阅读 · 0 评论 -
ArrayList源码详解
ArrayList1特点适合做查找;不适合做删除和插入,这样会复制,移动元素;查找O(1),删除和插入为O(n)默认构造器无参数初始空数组,new时,数组大小仍然为空,一旦添加就扩容变成10;private static final Object[] EMPTY_ELEMENTDATA = {};<!--与上面都是空数组,但是带大小的构造器初始化时,会使让该数组变成该大小,之...原创 2019-02-19 15:11:43 · 400 阅读 · 0 评论 -
LinkedList的源码详解
ArrayList 和linkedList区别联系LinkedList与ArrayList一样实现List接口~~~~~~~~,只是ArrayList是List接口的大小可变数组的实现,LinkedList是List接口双向链表的实现。基于链表实现的方式使得LinkedList在插入和删除时更优于ArrayList,而随机访问则比ArrayList逊色些。LinkedList实现所有可选的列...原创 2019-02-19 16:22:09 · 124 阅读 · 0 评论 -
Vector源码详解
1是一中线程同步(有争议)的容器,底层也是使用数组来储存,不过很多方法都加了syconized实现同步,效率很低,不适合在并发容器,而是作为同步容器,它的数组长度是变大为原来1倍,而且它的长度还以减小。但并非完全线程安全,因为同步方法内部是互斥安全的,但是方法与方法之间并发是互斥访问的。private static Vector<Integer> vector=new Vector...原创 2019-02-19 16:22:54 · 212 阅读 · 0 评论