Java集合框架
NEVERTHELESS0
这个作者很懒,什么都没留下…
展开
-
Java Vector底层实现原理源码详细分析Jdk8
与ArrayList比较Vector是同步的,因此开销就比ArrayList大,访问速度更慢。最好使用ArrayList而不是Vector,因为同步操作完全可以有程序员自己来控制。Vector每次扩容请求其大小的2倍(也可以通过构造函数设置增长的容量),而ArrayList是1.5倍代替方案可以使用Collections.synchronizedList();得到一个线程安全的ArrayList。或者使用CopyOnWriteArrayList原创 2019-11-03 14:52:51 · 667 阅读 · 2 评论 -
Java HashMap底层实现原理源码分析Jdk8
在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。原创 2019-10-30 21:19:49 · 183 阅读 · 0 评论 -
Java ArrayList底层实现原理源码详细分析Jdk8
ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArrayList类。ArrayList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了RandomAcc原创 2019-11-02 21:27:28 · 226 阅读 · 0 评论