搜索结果
查询Tags标签: elementData,共有 131条记录-
ConcurrentModificationException异常原因和解决方法
ConcurrentModificationException异常原因和解决方法首先看一下一个例子举出 ConcurrentModificationException 的出现场景: public static void main(String[] args) {List<Integer> list = new ArrayList<Integer>(){{add(1);add(2);add(3);}};Iterator<…
2022/9/14 23:20:37 人评论 次浏览 -
Iterator设计模式
迭代器设计模式 用集合类实现Aggregate接口,并实现其iterator方法,生成特定的迭代器对象,但返回时返回为Iterator类型,以此来抽象编程,实现解耦合的目的。 类图: 当使用不同的集合实现类时,可以使用通用的代码,因为是面向接口编程,在循环中只使用了迭代器接口中的…
2022/8/24 6:53:03 人评论 次浏览 -
ArrayList源码深度剖析,从最基本的扩容原理,到魔幻的迭代器和fast-fail机制,你想要的这都有!!!
ArrayList源码深度剖析 本篇文章主要跟大家分析一下ArrayList的源代码。阅读本文你首先得对ArrayList有一些基本的了解,至少使用过它。如果你对ArrayList的一些基本使用还不太熟悉或者在阅读本文的时候感觉有点困难,你可以先阅读这篇文章ArrayList设计与实现,自己动手写…
2022/7/8 14:21:25 人评论 次浏览 -
数组容器(ArrayList)设计与Java实现,看完这个你不懂ArrayList,你找我!!!
数组容器(ArrayList)设计与Java实现 本篇文章主要跟大家介绍我们最常使用的一种容器ArrayList、Vector的原理,并且自己使用Java实现自己的数组容器MyArrayList,让自己写的容器能像ArrayList那样工作。在本篇文章当中首先介绍ArrayList的一些基本功能,然后去分析我们自己…
2022/7/7 1:20:17 人评论 次浏览 -
ArrayList源码解析 基于JDK1.8
1.问题产生原因 最近在写leetcode的题目https://leetcode.cn/problems/subsets/时,在评论区看到了一种解法,其中出现了 List<Integer> newNumber = new ArrayList<>(result); //result为List<Integer>类型的代码语句,一般来说ArrayList的初始化为 Li…
2022/7/4 14:20:18 人评论 次浏览 -
ArrayList分析2 :Itr、ListIterator以及SubList中的坑
ArrayList分析2 : Itr、ListIterator以及SubList中的坑 转载请注明出处:https://www.cnblogs.com/funnyzpc/p/16409137.html 一.不论ListIterator还是SubList,均是对ArrayList维护的数组进行操作 首先我得说下ListIterator是什么,ListIterator 与Iterator均是迭代器接口…
2022/7/2 23:25:02 人评论 次浏览 -
18_Java集合ArrayList
ArrayList 集合可以理解为 存储引用类型元素 的数据容器,元素类型不限,但可以通过 指定类型参数 限制可以存储的数据类型。 常用方法增添元素// 在末尾添加元素 public boolean add(E e) // 在指定位置插入元素 public void add(int index, E element)删除元素// 删除指…
2022/6/8 1:20:09 人评论 次浏览 -
ArrayList源码分析(一)
这篇blog进行ArrayList源码的相关分析,首先看看开头部分代码public class ArrayList<E> extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, java.io.Serializable {@java.io.Serial//序列化uidprivate static final long serialVe…
2022/5/4 20:13:01 人评论 次浏览 -
ArrayList 源码分析
ArrayList 原理ArrayList 是基于数组来实现的 数组长度是固定的,java 中的数组都是定长数组,比如数组大小设置为20,此时你不停的往 ArrayList 里面塞入数据,此时元素超过20以后就会自动扩容,就会用一个更大的数组,把以前的数组拷贝到新的数组里面去ArrayList的优缺点…
2022/4/30 17:12:56 人评论 次浏览 -
Java集合之ArrayList源码分析
一、概述 ArrayList是一种变长的集合类,基于定长数组实现。ArrayList允许空值和重复元素,当往 ArrayList 中添加的元素数量大于其底层数组容量时,其会通过扩容机制重新生成一个更大的数组。另外,由于ArrayList底层基于数组实现,所以其可以保证在 O(1) 复杂度下完成随…
2022/4/25 17:12:37 人评论 次浏览 -
ArrayList源码解析
1.无参构造方法//默认初始长度private static final int DEFAULT_CAPACITY = 10;//初始空数组private static final Object[] EMPTY_ELEMENTDATA = {};//共享空数组 和 EMPTY_ELEMENTDATA 区分用来查看扩容多少private static final Object[] DEFAULTCAPACITY_EMPTY_ELEME…
2022/4/14 1:14:22 人评论 次浏览 -
Vector源码解读
1.背景 阅读源码是提高编程技能的有效方式... 面试中也经常问到源码相关的问题..... 2.源码解读 在解读Vector时大家可以先解读ArrayList,因为这个两个的逻辑几乎是一样的.... ArrayList源码解读:https://www.cnblogs.com/newAndHui/p/16101626.html 区别在于 1.Vector的很…
2022/4/5 14:19:19 人评论 次浏览 -
java中的fast-fail机制
概念 fail-fast 机制是java集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。分析 先看一个代码:1 public class Test {2 private static List<Integer> list = new ArrayList<>();3 public …
2022/3/28 11:53:03 人评论 次浏览 -
ArrayList源码分析
文章目录 ArrayList源码分析1、底层原理2、构造方法3、增 - - add方法4、删 - - remove方法5、查 - - get 方法6、改 - - set方法7、clone方法8、扩容总结ArrayList源码分析 1、底层原理 底层:基于数组实现List接口实现增删查改操作,实现RandomAccess随机访问接口,实现…
2022/2/25 17:22:21 人评论 次浏览 -
ArrayList扩容源码分析
ArrayList扩容源码分析 结论实际是维护了一个Object类型的数组(transient Object[] elementData) transient表示瞬时,表示该属性不会被序列化创建ArrayList时,调用无参构造时 初始elementData容量为0,第一次添加时,扩容至10 如果需要再次扩容时,则扩容为1.5倍创建A…
2022/2/23 11:52:24 人评论 次浏览