首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Java那些事

    ArrayList

    ArrayList有用过吗?它是一个什么东西?可以用来干嘛? 因为我们在使用ArrayList的时候一般不会设置初始值的大小,那ArrayList默认的大小就刚好是10。 ? ArrayList(int initialCapacity)会不会初始化数组大小? 这是什么问题?卧槽问个ArrayList还能问到知识盲区? ? ArrayList用来做队列合适么? 队列一般是FIFO(先入先出)的,如果用ArrayList做队列,就需要在数组尾部追加数据,数组头部删除数组,反过来也可以。 论遍历ArrayList要比LinkedList快得多,ArrayList遍历最大的优势在于内存的连续性,CPU的内部缓存结构会缓存连续的内存片段,可以大幅降低读取内存的性能开销。

    1.2K20发布于 2020-02-12
  • 来自专栏后端技术

    ArrayList

    ArrayList(Collection<? extends E> c) public ArrayList(Collection<?

    84830发布于 2019-05-25
  • 来自专栏后端码匠

    ArrayList

    ArrayList简介   ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。 ArrayList 实现java.io.Serializable 接口,这意味着ArrayList支持序列化,能通过序列化去传输。    ArrayList 核心扩容技术 ```java //下面是ArrayList的扩容机制 //ArrayList的扩容机制提高了性能,如果每次只扩充一个, //那么频繁的插入会导致频繁的拷贝,降低性能, () = %d\n",arrayList.size()); arrayList.add(1); arrayList.add(3); arrayList.add arrayList.clear(); // 判断ArrayList是否为空 System.out.println("ArrayList is empty: " + arrayList.isEmpty

    1.6K30发布于 2019-09-30
  • 来自专栏全栈开发工程师

    ArrayList详解

    一、概述 1、概述 基于数组实现,查询快,增删慢; 没有同步锁,多线程不安全; 自动扩容,使用方便; 2、基于数组实现,查询快,增删慢 ArrayList底层基于数组实现,元素连续存储 之前的元素到新的数组 * 效率较低,最好初始化一个较为合适的长度,减少扩容次数 */ // 无参构造,赋值一个空数组,当添加第一个元素的时候初始化容量为10 public ArrayList { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; } // 指定初始容量大小的构造函数 public ArrayList 1、概述 * 1、使用List<String> list = new Vector<>();,这个答案对,但是一个很笨拙的答案;(不推荐) * 2、让ArrayList变得安全:List<String> list = Collections.synchronizedList(new ArrayList<>());(不推荐) * 3、JUC的解决方案:List<String> list = new CopyOnWriteArrayList

    90910编辑于 2025-01-06
  • 来自专栏开发笔记

    DEBUG ArrayList

    1,ArrayList面试必问 说说ArrayList和LinkedList的区别? ArrayList基于数组实现,LinkedList基于链表实现,不同的数据结构决定了ArrayList查询效率比较高,而LinkedList插入删除效率比较高,反过来就比较慢了。 ArrayList默认初始容量为多少?按照几倍来扩容? 10,1.5倍。 说说数组扩容的原理? ArrayList扩容调用的是Array.copyof函数,把老数组遍历赋值给新数组返回。 说说ArrayList常见方法的时间复杂度? ArrayList和vector的区别 最大的区别在于线程是否安全 其次Vector是两倍扩容 最后就是在不指定大小的情况下,ArrayList容量初始化是在添加元素的时候,而Vector有一个无参构造器直接初始化为

    1.2K20发布于 2020-07-21
  • 来自专栏Bennyhuo

    Kotlin 的 val list: ArrayList= ArrayList() 居然报错!

    也许看了我们的题目,大家还没有明白过来到底发生了什么,那么我请大家再仔细看看: val list: ArrayList<String>= ArrayList() 好啦,其实这都不是什么大问题了,这篇文章探讨的那句代码本身就比较蛋疼: val list: ArrayList<String>= ArrayList() 我就问你为什么不去掉前面的类型,类型推导难道还不够吗 val list = ArrayList<String>() 或者在 >= 中间打一个空格嘛,这样就啥事儿没有了。

    1.9K10发布于 2020-02-20
  • 来自专栏Java阿呆

    浅谈ArrayList

    一、ArrayList的继承体系和特点 ArrayList总体继承体系图如下: ? ArrayList的特点主要有以下几点: ArrayList在内存中分配连续的存储空间,可理解为长度可变的数组。 ArrayList存储元素可以重复,存储顺序和添加顺序一致。 二、ArrayList的用法 List<String> list = new ArrayList<String>();//使用多态创建ArrayList,泛型指定该ArrayList只能放String类型的元素 ArrayList的初始容量默认为10: ? ArrayList有两个构造方法: ? ? 综上所述,ArrayList的扩容会产生一个新的数组,将原来数组的值复制到新的数组中。会消耗一定的资源。所以我们初始化ArrayList时,最好可以估算一个初始的大小。

    1.1K20发布于 2020-11-04
  • 来自专栏Y.

    ArrayList简介

    在集合框架中,ArrayList是一个普通的类,实现了List接口。 ArrayList 是以泛型方式实现的,使用时必须要先实例化。 ArrayList 底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表。 1.ArrayList 的使用 public static void main(String[] args) { //构建一个空的列表 List<Integer> list ArrayList<>(list1); //避免省略类型,否则,任意类型的数据都可以存放 List list3 = new ArrayList(); } 2 .ArrayList的常见方法 ArrayList 虽然提供的方法比较多,但是常用方法如下所示; 方法 功能 boolean add (E e) 结尾插

    40710编辑于 2024-01-23
  • 来自专栏springBoot3.0

    ArrayList 简介

    ArrayList 简介 ???? 文章简介:集合 ???? 创作目的:ArrayList ☀️ 今日天气:天气很好 ???? 在 ArrayList 中,我们即可以通过元素的序号快速获取元素对象,这就是快速随机访问。 ArrayList 实现了 Cloneable 接口 ,即覆盖了函数clone(),能被克隆。 ArrayList 实现了 java.io.Serializable接口,这意味着ArrayList支持序列化,能通过序列化去传输。 Arraylist 和 Vector 的区别? Arraylist 与 LinkedList 区别? ArrayList 扩容机制分析 先从 ArrayList 的构造函数说起 (JDK8)ArrayList 有三种方式来初始化,构造方法源码如下: /** * 默认初始容量大小

    88300编辑于 2023-03-06
  • 来自专栏开源部署

    ArrayList集合

    1、ArrayList概述 1.1、什么是ArrayList 虽然在Java中数组是运算速度最快的容器,但是在实际开发过程中,使用最频繁的数据容器并不是数组,而是ArrayList集合。 ArrayList是Java集合框架体系(Java Collections Framework)中的一员,ArrayList与数组类似,均将元素从0开始编号,但是它比数组更方便,长度可变就是方便处之一, 1.2、ArrayList使用格式 ArrayList同为引用类型,符合引用类型的使用方式,如下: 导包:import java.util.ArrayList; 创建对象:与其他普通的引用数据类型创建方式完全相同 ,但是要指定容器中存储的数据类型: 类名<集合内元素类型> 变量 = new 类名<集合内元素类型>(); ArrayList <String> xxXX = new ArrayList<String >(); ArrayList<Integer>  yyYY = new ArrayList<Integer>(); ArrayList<Double>  zzZZ = new ArrayList<Double

    87610编辑于 2022-09-14
  • 来自专栏开源君

    ArrayList详解

    ArrayList 简介 ArrayList 是一个数组列表。它的主要底层实现是Object数组,但与 Java 中的数组相比,它的容量能动态变化,可看作是一个动态数组结构。 ArrayList 实现该标记性接口可提供为类提供序列化和反序列化功能,这意味着 ArrayList 支持序列化,能通过序列化去传输。 实现 Cloneable 标记性接口。 生成具有指定初始容量值的方法 在知道要添加多少元素到 ArrayList 的时候要优先使用此构造方法,可以节省 ArrayList 因扩容时所耗费的资源。 public static void main(String[] args) { ArrayList arrayList = new ArrayList(); for (int i = 0; i < 10; i++) { arrayList.add(i); } remove(arrayList); System.out.println(arrayList

    1.2K30编辑于 2023-08-25
  • ArrayList应用

    String[] suits = {"♥","♠","♣","♦"}; public List<Card> buyCard() { List<Card> cardList = new ArrayList <>(); List<Card> hand2=new ArrayList<>(); List<Card> hand3=new ArrayList<>(); List<List<Card>>hands=new ArrayList<>(); hands.add(hand1); hands.add(hand2); <List<Integer>>(); List<Integer> list1 = new ArrayList<>(); list1.add(1); list.add (list1); for (int i = 1; i < numRows; i++) { List<Integer> cur = new ArrayList<>(

    22910编辑于 2026-01-12
  • 来自专栏desperate633

    ArrayList实现原理分析(Java源码剖析)ArrayList使用的存储的数据结构ArrayList的初始化ArrayList是如何动态增长ArrayList如何实现元素的移除ArrayList

    ArrayList使用的存储的数据结构 ArrayList的初始化 ArrayList是如何动态增长 ArrayList如何实现元素的移除 ArrayList小结 ArrayList是我们经常使用的一个数据结构 ,我们通常把其用作一个可变长度的动态数组使用,大部分时候,可以替代数组的作用,我们不用事先设定ArrayList的长度,只需要往里不断添加元素即可,ArrayList会动态增加容量。 ArrayList是作为List接口的一个实现。 那么ArrayList背后使用的数据结构是什么呢? ArrayList是如何保证动态增加容量,使得能够正确添加元素的呢? ArrayList的初始化 ArrayList提供了三个构造函数。 ArrayList小结 ArrayList是List接口的一个可变大小的数组的实现 ArrayList的内部是使用一个Object对象数组来存储元素的 初始化ArrayList的时候,可以指定初始化容量的大小

    2.5K30发布于 2018-08-27
  • 来自专栏Krains

    ArrayList源码分析

    当前数组中真正存放的元素个数 构造器 提供了三种构造器,分别是无参、指定大小、指定初始数据的构造器 // 无参构造器,初始化为一个空数组,在第一次add操作时将数组扩容为默认初始数组大小10 public ArrayList () { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; } // 指定初始大小 public ArrayList initialCapacity); } } // 指定初始数据 public ArrayList 将最后一个元素的引用置null,帮助GC清理,否者会产生内存泄露 elementData[--size] = null; // clear to let GC do its work } ArrayList

    40120发布于 2020-08-19
  • 来自专栏大大的微笑

    ArrayList底层实现

    package java.util; public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess /** * 默认的长度 */ private static final int DEFAULT_CAPACITY = 10; /** * 在new ArrayList Object []一个空的对象 */ private static final Object[] EMPTY_ELEMENTDATA = {}; /** * 这个就是ArrayList elementData; /** *集合的大小 */ private int size; /** *可以指定长度 */ public ArrayList 可以传进来一个集合,这里转成数组之后传给elementData * 然后判断是否是object[]类型,若不是则复制一个给elementData */ public ArrayList

    85190发布于 2018-02-27
  • 来自专栏lsqingfeng

    ArrayList源码解析

    ArrayList是我们使用频率非常高的一个集合,也是集合中相对比较简单的集合。是List接口的主要实现类。一般面试的时候经常会问到ArrayList和LinkedList的区别。 public ArrayList(int initialCapacity); public ArrayList(); public ArrayList(Collection<? list2 = new ArrayList<>(3); // 传入一个集合 List<String> list3 = new ArrayList<>(list1); ArrayList原理 介绍完了这几个构造方法,我们先来讲讲ArrayList的原理。 Q1:ArrayList为什么可以存储元素? 首先介绍一下ArrayList类中的五个核心成员变量。

    54210编辑于 2022-05-10
  • 来自专栏竹蜻蜓技术专栏

    ArrayList 源码解析

    今天就来说说我们开发中常用的ArrayList源码 ArrayList几个重要的成员变量 和String源码解析开篇一样,我们还是先来看看ArrayList类的基本结构。 比如说:扩容 如果ArrayList的本质是一个数组,数组结果一旦被创建之后就不能被改变了,那么ArrayList是怎么实现动态扩容的 从上文的分析可以得到ArrayList的本质就是一个数组,初始为空数组 ArrayList的类注释 要看一个类的源码,就必须的先看看这个类的类注释。由于ArrayList的类注释很长,且都是英文的,为了节省大家的时间,我将其翻译成英文并提取出重要信息如下。 ; } // 使用已存在的集合初始化ArrayList public ArrayList(Collection<? ArrayList 允许 null 值 ArrayList 最大容量是 Integer.MAX_VALUE add 方法并不是线程安全的。

    64820发布于 2020-07-08
  • 来自专栏Java杂货店

    Java容器 ArrayList

    ArrayList到底能不能被序列化呢? 这里先说结论 ArrayList 是能被序列化的,有兴趣的同学可以做个实验,后面在回顾基础的时候会专门对序列化进行分析。 扩容 ArrayList 有三个构造函数 ArrayList(int initialCapacity) //指明容器大小 ArrayList() // 默认容器初始化大小 ArrayList(Collection 有很多资料说ArrayList 构造函数如果不指定大小,默认是10,这种说法是不严谨的。默认初始化后的大小其实是0,第一次扩容大小为10。 的操作都会修改modCount,如果在迭代的过程中ArrayList被修改就会触发快速失败。 使用规范 阿里的Java操作手册中有如下几点强制规范(这里引用一下): 【强制】ArrayList的subList结果不可强转成ArrayList

    96900发布于 2019-05-15
  • 来自专栏java小白

    ArrayList源码详解

    ArrayList UML类图 ArrayList 概述 ArrayList 是实现 List 接口的动态数组,所谓动态就是它的大小是可变的。 每个 ArrayList 实例都有一个容量,该容量是指用来存储列表元素的数组的大小。默认初始容量为 10。随着 ArrayList 中元素的增加,它的容量也会不断的自动增长。 在每次添加新的元素时,ArrayList 都会检查是否需要进行扩容操作,扩容操作带来数据向新数组的重新拷贝,所以如果我们知道具体业务数据量,在构造 ArrayList 时可以给 ArrayList 指定一个初始容量 如果多个线程同时访问一个 ArrayList 实例,而其中至少一个线程从结构上修改了列表,那么它必须保持外部同步。 public ArrayList(Collection<?

    82750发布于 2018-05-24
  • 来自专栏nginx

    【JAVA集合篇 - ArrayList】你真的了解ArrayList吗?

    前言 1.用了这么多次Arraylist,真的理解ArrayList吗? ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。 ; // 引入 ArrayListArrayList<E> listName=new ArrayList<>();  // 初始化 E: 泛型数据类型,用于设置 listName的数据类型,只能为引用数据类型 clone() 复制一份 arraylist contains() 判断元素是否在 arraylist get() 通过索引值获取 arraylist 中的元素 indexOf() 返回 arraylist 中元素的索引值 removeAll() 删除存在于指定集合中的 arraylist 里的所有元素 remove() 删除 arraylist 里的单个元素 size() 返回 arraylist 里元素数量 isEmpty() 判断 arraylist 是否为空 subList() 截取部分 arraylist 的元素 set() 替换 arraylist 中指定索引的元素

    78210编辑于 2025-11-13
领券