摘要:[TOC] 1. 概述 在使用List集合时有些地方需要注意一下的, 不然会出现一些莫名其妙的错误. 2. Arrays.asList(); 2 1. 产生不可操作的集合 来看一个例子. 会直接抛出java.lang.UnsupportedOperationException异常, 为什么呢? 答案
阅读全文
摘要:[TOC] 1.概述 通常情况下存储键值对仅需要HashMap即可满足需求, 但是HashMap有些许缺点, 比如: 1. 不能保证元素的顺序, 因此产生了LinkedHashMap; 2. 不能对元素进行排序, 因此产生了本文中的TreeMap. TreeMap实现了SortedMap接口, So
阅读全文
摘要:[TOC] 1. 概述 本文主要针对对网上 关于HashMap在多线程环境下会形成循环链表的问题 进行一次总结. 2. 敲黑板的点 1. 只会在低于jdk1.8的版本中发生(1.6, 1.7会有, 再古老的版本我就不知道了) 2. jdk1.7的HashMap的数据结构使用的是 数组+链表 , 不存
阅读全文
摘要:[TOC] 1. 概述 LinkedHashMap还是比较简单的, 相对于HashMap, 它是有序的, 那么问题就来了, 它是怎么保持有序的? 它直接继承于HashMap, 重写或增加了一些新的关于保持Map有序的方法, 至于扩容或是数据结构等都于HashMap一样, 下面我们重点分析它是怎么保持
阅读全文
摘要:[TOC] 1. 概述 HashMap是一种key/value形式的存储结构. 它综合了数组(查询容易, 插入和删除困难)和链表(插入和删除容易, 查询困难)的特点. HashMap的核心点就是 hash算法 和 红黑树算法 . HashMap是 无序的 . 2. 存储结构 HashMap的存储结构
阅读全文
摘要:[TOC] 1. 概述 1. 通过类名可以想象到, 该类的结构是一个链表结构. 2. 但是它是一个类似于数组的链表, 意思就是普通的添加操作与数组类似, 将新元素添加到链表的尾端. 并支持通过下标来进行访问. 3. 它实现了Deque接口, 提供了栈和队列的操作, 也就是该类的主要功能吧. 4. 对
阅读全文
摘要:[TOC] 1. 概述 为了弥补普通数组无法自动扩容的不足,Java提供了集合类,其中ArrayList就对数组进行了封装,使其可以自动的扩容或缩小长度。 因为是对数据进行了封装,所以底层存储结构是数组结构。可以想象的到,数组长度的自动变化必须需要开辟新内存,然后进行数组元素的拷贝。 因为数组,所以
阅读全文