• 2024-09-23JavaSE---Fail-Fast
    总结主要用于集合类中,以确保在遍历集合时如果集合本身被修改,则会立即抛出ConcurrentModificationException异常。原理内部计数器:每个集合对象都有一个内部计数器,称为modCount(modificationcount)。每当集合结构被修改(比如添加或删除元素),这个计数器就会增加。迭代器检查:当
  • 2024-09-16ArrayList 源码解析
    ArrayList是Java集合框架中的一个动态数组实现,提供了可变大小的数组功能。它继承自AbstractList并实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现。除该类未实现同步外,其余跟Vector大致相同。每个ArrayList都有一个容量capac
  • 2024-09-16Arraylist源码分析:如何实现一次add操作?
    注意:这里是JDK17,和JDK8略微有所不同成员变量 add操作:0.(初始化,常用)在初始化newArrayList的时候,会给elementData赋一个有区别的空列表,以便下面使用。 1.将指定元素添加至队尾,返回一个布尔值  2.add的抽离方法,当size和elementData.length一样大的时候就该需要扩容了,
  • 2024-09-06Array List与顺序表
    学习目标线性表顺序表与链表的简单了解ArrayList的介绍ArrayList的扩容机制 线性表线性表(linearlist):是由n且具有相同的特性数据元素的有限列表,线性表在实际运用中常见的数据结构,常见的线性表:栈,堆,队列,顺序表,链表…链表:在逻辑上是连续的数据结
  • 2024-08-30JAVA集合的扩容机制
    ArrayListList<Integer>list =newArrayList<>();不指定初始长度,默认刚开始赋值{}空集合,当add时,初始长度为10。//初始容量privatestaticfinalintDEFAULT_CAPACITY=10;//空数组privatestaticfinalObject[]DEFAULTCAPACITY_EMPTY_ELEMENTDATA={};当超
  • 2024-08-30最常用集合 - arraylist详解
    ArrayList介绍ArrayList实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现。除该类未实现同步外,其余跟Vector大致相同。每个ArrayList都有一个容量(capacity),表示底层数组的实际大小,容器内存储元素的个数不能多于当前容量。当向容器
  • 2024-08-28ArrayList与顺序表
    1.线性表         线性表(linearlist)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列..    线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是
  • 2024-08-23ArrayList动态扩容机制(长度可变原理)
    ArrayList底层是数组结构的,数组的默认长度为10。当数组添加满了后,会自动扩容为1.5倍。原理讲解:1.用空参构造函数创建ArrayList集合容器。测试代码:publicclassArrayListDemo{publicstaticvoidmain(String[]args){//创建ArrayList集合容器
  • 2024-08-22深入理解 Java 中 ArrayList 的底层原理
    在这篇博客中,我们将深入探讨ArrayList的底层实现原理,并通过逐步剖析ArrayList的源码来理解其内部工作机制。我们将重点关注ArrayList的创建、元素添加、扩容机制等关键点。创建ArrayList集合对象ArrayList<String>list=newArrayList<>();使用空参构造器创建ArrayList集合
  • 2024-08-15【ArrayList】JDK1.8源码详细注释 以及如何实现线程安全的链表
    ArrayList(JDK8)ArrayList有四个内部类,成员内部类Itr,成员内部类ListItr,静态内部类SubList,ArrayListSpliterator(暂时用不到)Itr是Iterator的实现类,支持正向遍历,ArrayList的iterator方法返回一个Itr对象ListItr是ListIterator的实现类,支持双向遍历,ArrayList的listIterator方法
  • 2024-08-14ArrayList/Vector/ListedList
    ArrayList:是数组数据结构,扩容是通过扩容数组。可快速访问其中一个元素或修改。ListedList:是链表数据结构,可高效的实现中间元素修改/删除。但是访问没有数组高效。vector:是强同步的ArrayList ArrayList扩容步骤1.判断申请的元素后,元素数量超过现有容量。privatevoidens
  • 2024-07-21ArrayList【源码解析】
    showDiagram         从上图可以看出我们的老朋友ArrayList实现了Cloneable、RandomAccess、Serializable3个接口,并且继承了AbstractList抽象类。1.Cloneable         Cloneable接口是Java中的一个标记接口,它没有任何方法定义,只是作为一个标志,表示实现
  • 2024-07-21[Java基础]ArrayList
    ArrayListArrayList是List接口的实现类,它是支持根据需要而动态增长的数组。java中标准数组是定长的,在数组被创建之后,它们不能被加长或缩短。这就意味着在创建数组时需要知道数组的所需长度,但有时我们需要动态程序中获取数组长度。ArrayList就是为此而生的,但是它不是线程安全的,外
  • 2024-07-13ArrayList
    创建ArrayList不指定初始大小List<String>list=newArrayList<>();调用无参构造方法,创建一个初始容量为10的空列表privatestaticfinalintDEFAULT_CAPACITY=10;privatestaticfinalObject[]DEFAULTCAPACITY_EMPTY_ELEMENTDATA={};publicArrayList(){
  • 2024-07-122-ArrayList底层结构和源码分析
    2-ArrayList底层结构和源码分析介绍汇总:ArrayList的注意事项ArrayList的运行重要步骤补充1-ArrayList的注意事项ArrayList允许添加所有的元素,包括null,而且还可以多个null。ArrayList是由数组来实现数据存储的。ArrayList基本等同于Vector,除了ArrayList是线
  • 2024-07-05ArrayList底层结构和源码分析
    //无参构造器创建ArrayList对象//ArrayListlist=newArrayList();//断点1ArrayListlist=newArrayList(8);//断点2//添加1-10数据for(inti=0;i<=10;i++){list.add(i);}//添
  • 2024-07-03Vector底层结构和代码解析
    基本介绍定义说明publicclassVector<E>extendsAbstractList<E>implementsList<E>,RandomAccess,Cloneable,java.io.Serializable{Vector底层是一个对象数组,protectedObject[]elementData;Vector是线程同步的(线程安全),Vector类的操作方法带有synchronized
  • 2024-06-02集合类源码浅析のArrayList
    源码分析路线图:初级部分:ArrayList->LinkedList->Vector->HashMap(红黑树数据结构,如何翻转,变色,手写红黑树)->ConcurrentHashMap中级部分:Spring->SpringMVC->SpringBoot->Mybatis核心类源码高级部分:中间件源码(有生之年系列)第一篇,从最简单的ArrayList入手分析1、成员变量
  • 2024-06-02stack源码阅读
    javaStackstack是一个后进先出的数据结构,继承于vector,自身提供了五种方法,pop、push、empty、peek、search本文主要介绍pop将一个元素入栈push将一个元素出栈packagejava.util;/***The{@codeStack}classrepresentsalast-in-first-out*(LIFO)
  • 2024-04-26JDK源码分析-Vector
    概述Vector是Java集合中线程安全的动态数组,它也可以根据需要进行扩容和缩容,与ArrayList类似。但有一个重要的区别,Vector是同步的,也就是它的操作是线程安全的,在某些特定场景下是可以保证线程安全的,但同时也会带来性能损耗,因此在单线程环境通常还是推荐使用ArrayList。类图
  • 2024-04-24JDK源码分析-ArrayList
    概述ArrayList是List接口的一个实现类,也是Java中最常用的容器实现类之一,可以把它理解为「可变数组」。Java中的数组初始化时需要指定长度,而且指定后不能改变。ArrayList内部也是一个数组,它对数组的功能做了增强:主要是在容器内元素增加时可以动态扩容,这也是ArrayList的
  • 2024-03-24Day25 迭代器之Iterator底层
    Day25迭代器之Iterator底层一、迭代器1、概念:迭代器(Iterator)是一种用于遍历集合(Collection)元素的接口,它提供了统一的方式来访问集合中的元素,而不暴露集合的内部结构。通过迭代器,我们可以依次访问集合中的每个元素,进行遍历和操作。2、使用步骤:获取集合的迭代器:Iterat
  • 2024-03-14河北王校长源码之ArrayList
    ArrayListy类结构继承AbstractList实现Listlist基本方法实现RandomAccess支持随机访问(下标)for效率高于迭代器(对比LinkedList)实现Cloneable浅克隆实现Serializable序列化成员变量默认容量privatestaticfinalintDEFAULT_CAPACITY=10;空数组
  • 2024-02-17Java集合篇之深入解析ArrayList,这六问你答的上来吗?
    写在开头开年第一篇,先祝各位新的一年身体健康,学业有成,事业有成哈,春节期间就是咔咔乱吃,咔咔乱玩,把学习都抛一边子去了,已经9天没有学习了,深深的懊悔,从今天开始,2024年的学习正式开启,一起给我猛冲!!!书接上回,我们开启了Java集合部分的学习,今天我们就来看一下List,其中它的核心有两个,一个
  • 2024-01-02【JDK源码】ArrayList的代码实现
    JDK版本:1.8.0_271基础介绍ArrayList底层数据结构就是一个数组:index表示数组下标,从0开始计数,elementDatda表示数组本身DEFAULT_CAPACITY表示数组的初始化大小,默认是10size表示数组的大小,int类型,没有使用volatile修饰,非线程安全modCount统计当前数组被修改的版本次数,数