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

    ArrayList

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

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

    ArrayList

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

    76830发布于 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.5K30发布于 2019-09-30
  • 来自专栏全栈程序员必看

    arraylist的基本方法_什么是arraylist

    同时还实现了 RandomAccess、Cloneable、Serializable 接口,所以ArrayList 是支持快速访问、复制、序列化的。 成员变量 ArrayList 底层是基于数组来实现容量大小动态变化的。 构造一个初始容量大小为 initialCapacity 的 ArrayList public ArrayList(int initialCapacity) { if (initialCapacity 使用指定 Collection 来构造 ArrayList 的构造函数 public ArrayList(Collection<? 接下来是关键,直接调用 ArrayList 的 remove 方法删除下标为 lastRet 的元素。

    1.3K20编辑于 2022-11-09
  • 来自专栏开发笔记

    DEBUG ArrayList

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

    1.1K20发布于 2020-07-21
  • 来自专栏全栈开发工程师

    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

    66010编辑于 2025-01-06
  • 来自专栏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) 结尾插

    35310编辑于 2024-01-23
  • 来自专栏Java阿呆

    浅谈ArrayList

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

    1K20发布于 2020-11-04
  • 来自专栏Bennyhuo

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

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

    1.8K10发布于 2020-02-20
  • 来自专栏全栈程序员必看

    java中arraylist扩容问题_Arraylist扩容机制

    当我们要 add 进第1个元素到 ArrayList 时,elementData.length 为0 (因为还是一个空的 list),因为执行了 ensureCapacityInternal() 方法 grow() 方法 /** * 要分配的最大数组大小 */ private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE – 8; /** * ArrayList

    1.5K20编辑于 2022-09-06
  • 来自专栏springBoot3.0

    ArrayList 简介

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

    79400编辑于 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

    79010编辑于 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

    84030编辑于 2023-08-25
  • 来自专栏全栈程序员必看

    arraylist和linkedlist的区别_arraylist 和linkedlist

    这段时间把疯狂JAVA再看了一遍,发现Stack,ArrayDeque,LinkedList都可以作为栈使用,所以就稍微从性能以及实现的细节对比这三者的区别。

    99530编辑于 2022-11-05
  • 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<>(

    14710编辑于 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.2K30发布于 2018-08-27
  • 来自专栏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 中指定索引的元素

    54110编辑于 2025-11-13
  • 来自专栏java小白

    ArrayList源码详解

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

    71850发布于 2018-05-24
  • 来自专栏大大的微笑

    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

    77890发布于 2018-02-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

    32320发布于 2020-08-19
领券