文章 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...

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

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

ConcurrentHashMapTips:其实今天讲它肯定是大概的过一下,它既然是一个线程安全的容器,那么线程安全也要涉及到很多的知识点,比如悲观锁与乐观锁原子性,指令有序性和线程可见性无锁算法内存屏障Java内存模型这些目前等讲JVM的时候我们再一起去探讨吧,我们今天主要是过一下它,等后面把知识点串起来就会明白的。跟HashTable 的区别,1.7和1.8的比较ConcurrentHash....

史上最全的Java容器集合之ConcurrentHashMap1.8(源码解读)(一)
文章 2023-10-08 来自:开发者社区

java框架集合List子接口之ArrayList源码剖析

ArrayListArrayList实现了List接口 , 它是有序且可以重复的 , 允许存放所有所有元素 , 包括null , 除了实现List接口之外这个类还提供了一些方法来操作内部存储列表数组的大小 , 这个类大致相当于Vector , 只是它不是同步的 , 同时ArrayList还实现了RandomAccess, Cloneable, java.io.SerializableRandom....

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

产品推荐

Java开发者

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

+关注