
Java集合
文章平均质量分 86
蛋卷在月球烤面包
这个作者很懒,什么都没留下…
展开
-
Java基础-ConcurrentHashMap
Java 7 中 ConcurrentHashMap 的存储结构如下图,ConcurrnetHashMap 由很多个 Segment 组合,而每一个 Segment 内部是一个类似于 HashMap 结构的 HashEntry 数组,所以可以进行扩容。但是 Segment 的个数一旦初始化就不能改变,默认 Segment 的个数是 16 个,可以认为 ConcurrentHashMap 默认支持最多 16 个线程并发。一个ConcurrentHashMap中只有一个Segment<K,V>类原创 2022-05-06 21:19:14 · 1633 阅读 · 0 评论 -
Java基础-LinkedList
LinkedList 是 Java 集合框架中一个重要的实现,其底层采用的双向链表结构。和 ArrayList 一样,LinkedList 也支持空值和重复值。由于 LinkedList 基于链表实现,存储元素过程中,无需像 ArrayList 那样进行扩容。但有得必有失,LinkedList 存储元素的节点需要额外的空间存储前驱和后继的引用。另一方面,LinkedList 在链表头部和尾部插入效率比较高,但在指定位置进行插入时,效率一般。原因是,在指定位置插入需要定位到该位置处的节点,此操作的时间复杂度为原创 2022-04-26 21:50:48 · 798 阅读 · 0 评论 -
Java基础-ArrayList
ArrayList是Java集合框架中的一个重要的类,它继承于AbstractList,实现了List接口,是一个长度可变的集合,提供了增删改查的功能。集合中允许null的存在。ArrayList类还是实现了RandomAccess接口,可以对元素进行快速访问。实现了Serializable接口,说明ArrayList可以被序列化,还有Cloneable接口,可以被复制。和Vector不同的是,ArrayList不是线程安全的。public class ArrayList<E> exten原创 2022-04-26 11:05:49 · 1216 阅读 · 0 评论 -
Java基础-LinkedHashMap
LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题。HashMap:LinkedHashMap:一、基本定义 static class Entry<K,V> extends HashMap.Node<K,V> { Entry<K,V> before, after; Entry(int has..原创 2022-04-23 13:02:40 · 2016 阅读 · 0 评论 -
Java基础-HashMap
JDK1.8 之前 HashMap 由数组+链表组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突)。JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)(将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容,而不是转换为红黑树)时,将链表转化为红黑树,以减少搜索时间。一、基本定义 // 初始容量是16 static final int DEFAULT_INITIAL_CAPAC原创 2022-04-19 10:30:44 · 893 阅读 · 0 评论