文章 2025-06-02 来自:开发者社区

Java 集合面试题从数据结构到 HashMap 源码剖析详解及长尾考点梳理

我将从Java集合的基础概念入手,介绍常见集合类型,再深入剖析HashMap的底层数据结构、源码实现及应用实例,助你全面掌握相关知识。 Java集合面试题详解:从数据结构到HashMap源码剖析 在Java开发领域,对集合框架的深入理解是至关重要的。无论是在日常开发还是面试场景中,集合相关知识都是高频考点。本文将...

Java 集合面试题从数据结构到 HashMap 源码剖析详解及长尾考点梳理
文章 2025-04-21 来自:开发者社区

JUC并发—1.Java集合包底层源码剖析

大纲 1.为什么要对JDK源码剖析 2.ArrayList源码一:基本原理以及优缺点 3.ArrayList源码二:核心方法的原理 4.ArrayList源码三:数组扩容以及元素拷贝 5.LinkedList源码一:优缺点和使用场景 6.LinkedList源码二:双向链表数据结构 7.LinkedList源码三:插入元素的原理 8...

JUC并发—1.Java集合包底层源码剖析
文章 2024-06-13 来自:开发者社区

java中如何确保一个集合不能被修改? - 源码解读详细--JavaPub版本

看了一些java 相关的题目,其中有个说如何确保一个集合不能被修改? 答案中提到了两种实现方式,Collections. unmodifiableCollection(Collection c) 方法创建的集合,和使用Arrays.asList创建的集合。 那么为什么这两种方式创建的集合为什么就不能修改呢? 下边通过源码来看一下到底是为什么。 1. Collections. un...

java中如何确保一个集合不能被修改? - 源码解读详细--JavaPub版本
文章 2023-11-23 来自:开发者社区

史上最全的Java容器集合之LinkedHashMap(源码解读)

概述LinkedHashMap是HashMap的子类,它的大部分实现与HashMap相同,两者最大的区别在于,HashMap的对哈希表进行迭代时是无序的,而 LinkedHashMap对哈希表迭代是有序的,LinkedHashMap默认的规则是,迭代输出的结果保持和插入key-value pair的顺序一致(当然具体迭代规则可以修改)。LinkedHashMap除了像HashMap一样用数组、单....

史上最全的Java容器集合之LinkedHashMap(源码解读)
文章 2023-11-23 来自:开发者社区

史上最全的Java容器集合之HashMap(源码解读)(二)

HashMap的成员方法put方法//向哈希表中添加元素 public V put(K key, V value) { return putVal(hash(key), key, value, false, true); } 复制代码 向用户开放的put方法调用的是putVal方法:putVal方法需要判断是否出现哈希冲突问题:其中如果哈希值相等,key也相等,则是覆盖value操作;如...

史上最全的Java容器集合之HashMap(源码解读)(二)
文章 2023-11-23 来自:开发者社区

史上最全的Java容器集合之HashMap(源码解读)(一)

一 什么是MapMap是一个接口,他是key-value的键值对,一个map不能包含重复的key,并且每一个key只能映射一个value;Map接口提供了三个集合视图:key的集合,value的集合,key-value的集合;Map内元素的顺序取决于Iterator的具体实现逻辑,获取集合内的元素实际上是获取一个迭代器,实现对其中元素的遍历;Map接口的具体实现中存在三种Map结构,其中Hash....

史上最全的Java容器集合之HashMap(源码解读)(一)
文章 2023-11-23 来自:开发者社区

史上最全的Java容器集合之Vector和LinkedList(源码解读)

Vector 源码分析其实Vector要讲的东西不多了,因为它和ArrayList的代码很像,就是再每个方法上加了锁,如下图因为大部分和前面差不多,我来说说不同的点吧看图上面的 这个是Vetor和ArrayList不同的另一个点 它的增长因子是可以自己定义的。我们来看grow方法这段代码是扩容代码,可以看如果定义了曾长因子就每次扩容增长因子,不然就是扩容2倍其他的增删改查,我就不说了,自己也没细....

史上最全的Java容器集合之Vector和LinkedList(源码解读)
文章 2023-11-23 来自:开发者社区

史上最全的Java容器集合之ArrayList(源码解读)(二)

add(int, E)方法public void add(int index, E element) { // 插入数组位置检查 rangeCheckForAdd(index); // 确保容量,如果需要扩容的话则自动扩容 ensureCapacityInternal(size + 1); // Increments modCou...

文章 2023-11-23 来自:开发者社区

史上最全的Java容器集合之ArrayList(源码解读)(上)

一、ArrayList认识概念概念:ArrayList是一个其容量能够动态增长的动态数组。但是他又和数组不一样,下面会分析对比。它继承了AbstractList,实现了List、RandomAccess, Cloneable, java.io.Serializable。RandomAccess接口,被List实现之后,为List提供了随机访问功能,也就是通过下标获取元素对象的功能。实现了Clon....

史上最全的Java容器集合之ArrayList(源码解读)(上)
文章 2023-11-23 来自:开发者社区

史上最全的Java容器集合之ConcurrentHashMap1.8(源码解读)(二)

put方法单纯的put方法/* * 单纯的额调用putVal方法,并且putVal的第三个参数设置为false * 当设置为false的时候表示这个value一定会设置 * true的时候,只有当这个key的value为空的时候才会设置 */ public V put(K key, V value) { return pu...

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐

Java开发者

Java开发者成长课堂,课程资料学习,实战案例解析,Java工程师必备词汇等你来~

+关注