java集合源码
文章平均质量分 82
bird_tp
不管是菜鸟还是笨鸟,反正先飞总是没错
展开
-
java集合框架大览
一、为什么需要java集合类框架 在编程中,常常需要集中存放多个数据。从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量。一旦在数组初始化时指定了这个数组长度,这个数组长度就是不可变的,如果我们需要保存一个可以动态增长的数据(在编译时无法确定具体的数量),java的集合类就是一个很好的设计方案了。 集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。所以的集合类都位于java.util包下,后来为了处理多线程环境下的并发安全问题,java5还在j..原创 2021-01-12 17:27:20 · 224 阅读 · 0 评论 -
ConcurrentHashMap源码查看
一、博客背景 因hashmap不是线程安全的,在多线程下插入会有死锁的问题,所以ConcurrentHashMap就出现来替代了,ConcurrentHashMap在java7和java8中数据结构有了变化,我们本篇博客会根据我们目录中的提到的问题一起交叉查看jvav7和java8的源码,查看之前可以自己先想想问题的答案。篇幅较多,请耐心看完,java7的版本号为1.7.0_04,java8的版本号为1.8.0_162 二、常见问题 CurrentHashMap的实现原理 CurrentHashMa原创 2021-01-21 20:51:40 · 301 阅读 · 0 评论 -
TreeMap源码查看
一、构造函数 // 自定义的比较器,用于给TreeMap的元素排序 private final Comparator<? super K> comparator; // 红黑树的根节点 private transient Entry<K,V> root; // 节点数目 private transient int size = 0; // TreeMap结构的修改次数,用于fail-fast机制 private transient int modCount = 0; // 无参原创 2021-01-18 21:14:43 · 142 阅读 · 1 评论 -
set集合类源码查看
一、博客背景 set接口下有两个主要常用地的实现子类hashset、linkedhashset和treeset,今天我们就一起来查看学习下 二、hashset 1.构造函数 private transient HashMap<E,Object> map; private static final Object PRESENT = new Object(); public HashSet() { map = new HashMap<>(); } public Hash原创 2021-01-18 18:08:28 · 170 阅读 · 1 评论 -
LinkedHashMap源码查看
一、背景 LinkedHashMap是基层HashMap的一个子类,所以很多方法都是用的HashMap的方法,尚未了结HashMap的同学可以去看下我的上一篇博客,在本篇博客中涉及到HashMap的源码方法就不不粘贴了,同样本篇会讲解下java7.和java8的代码 java7的版本号为1.7.0_04,java8的版本号为1.8.0_162 二、问题 LinkedHashMap的数据结构 三、构造函数 1.java7 //循环链表的头结点 private transient Ent..原创 2021-01-18 17:04:08 · 253 阅读 · 0 评论 -
HashMap源码查看
一、博客背景 hashmap在java7和java8中数据结构有了变化,我们本篇博客会根据我们目录中的提到的问题一起交叉查看jvav7和java8的源码,篇幅较多,请耐心看完,java7的版本号为1.7.0_04,java8的版本号为1.8.0_162 二、常见问题 HashMap的底层原理是什么? 为什么JDK 7使用数组+链表?JDK8中为什么要使用红黑树? hashmap底层是如何put的 hashmap底层是如何实现get的 hashmap如何扩容原创 2021-01-14 17:57:26 · 801 阅读 · 0 评论 -
List集合类源码查看
一、博客背景 list接口下有两个主要常用地的实现子类ArrayList和LinkedList,今天我们就一起来查看学习下,使用的jdk版本为1.7.0_04 二、ArrayList 在查看源码之前我们思考一下下面的问题,然后带着问题去学习 ArrayList底层实现原理 ArrayList的默认容量大小? ArrayList的插入或删除一定慢吗? ArrayList底层就是数组,访问速度本身就比较快,为什么还要实现RandomAccess接口? Arra原创 2021-01-13 19:40:47 · 353 阅读 · 0 评论