ArrayList类

news/2024/11/16 9:56:36/

ArrayList类

目录

  • ArrayList类
    • 一、构造方法摘要
      • 1.1 ArrayList()
      • 1.2 ArrayList(Collection c)
      • 1.3 ArrayList(int initialCapacity)
    • 二、 ArrayList的扩容机制:
      • 2.1 源码如下:
      • 2.2. 以上扩容机制的弊端:
    • 三、代码案例

ArrayList类

一、构造方法摘要

1.1 ArrayList()

构造一个初始容量为 10空列表

1.2 ArrayList(Collection c)

  • 构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。
  • 可以将其它集合转成List

1.3 ArrayList(int initialCapacity)

构造一个具有指定初始容量的空列表。

==================================================================

ArrayList类没有独有的方法需要掌握,都是使用List和Collection中的方法。

二、 ArrayList的扩容机制:

2.1 源码如下:

int newCapacity = oldCapacity + (oldCapacity >> 1);

新容量 = 旧容量的1.5倍·

2.2. 以上扩容机制的弊端:

每次扩容的是旧容量的1.5倍,可能会造成空间的浪费
比如: 旧容量=10,存储11个元素,扩容=15,有4个浪费

ArrayList也不能无限扩容,最大容量= Integer.MAX_VALUE - 8

三、代码案例

import java.util.ArrayList;
import java.util.Arrays;
/*** 构造方法摘要* ArrayList()*           构造一个初始容量为 10 的空列表。* ArrayList(Collection c)*           构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。*           可以将其它集合转成List* ArrayList(int initialCapacity)*           构造一个具有指定初始容量的空列表。*** ArrayList类没有独有的方法需要掌握,都是使用List和Collection中的方法。** ArrayList的扩容机制:*    int newCapacity = oldCapacity + (oldCapacity >> 1);*    新容量 = 旧容量的1.5倍** 以上扩容机制的弊端:*    每次扩容的是旧容量的1.5倍,可能会造成空间的浪费*    比如:*       旧容量=10,存储11个元素,扩容=15,有4个浪费*** ArrayList也不能无限扩容,最大容量= Integer.MAX_VALUE - 8**/
public class ArrayListDemo {public static void main(String[] args){ArrayList arrayList = new ArrayList (Arrays.asList(1,2,3,4,5));System.out.println("arrayList = " + arrayList);System.out.println("arrayList.size() = " + arrayList.size());//  构造一个初始容量为 10 的空列表。//  也就是ArrayList底层数组的长度是10ArrayList arrayList2 = new ArrayList();/** size()是集合中元素的个数;不是底层数组的长度*/System.out.println("arrayList2.size() = " + arrayList2.size());// 当元素个数超过底层数组的长度,此时ArrayList会自动扩容for (int i = 0; i < 10; i++) {arrayList2.add(i);}System.out.println("arrayList2.size() = " + arrayList2.size());arrayList2.add(100);System.out.println("arrayList2 = " + arrayList2);System.out.println("arrayList2.size() = " + arrayList2.size());}
}

http://www.ppmy.cn/news/19685.html

相关文章

【C语言课堂】 函数递归

欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e;&#x1f49e; 前言&#xff1a; 时隔多日&#xff0c;来还欠大家的 C 语言学习啦&#xff0c;上期讲了函数&#xff0c;其实函数中应该包括函数递归的&#xff0c;这里单独拿出来讲解的原因是函数递归属于重难知识&#xf…

8. 好客租房-WebSocket与即时通讯系统[项目必需]

本章节主要是学习WebSocket, 目标快速入门, 能够回答以下问题:WebSocket和HTTP的区别.WebSocket使用的是全双工通讯协议, 与其他类似协议有啥区别?WebSocket中的常用注解有哪些&#xff1f;通过本章节的学习, 应该可以回答上来这几个问题.8.1 WebSocket概念快速理解WebSocket …

【Linux】目录权限和默认权限

上期介绍了Linux的文件权限&#xff0c;这期我们仔细来说说Linux环境下目录权限和默认权限一、目录权限1.1 进入目录所需的权限我们在进入目录时需要什么样的权限呢&#xff1f;是r、w还是x呢&#xff1f;下面我们一起来验证一下&#xff1a;&#x1f4cb;如下我门拥有全部目录…

2-SAT

前置核心知识&#xff1a;强连通分量&#xff08;tarjan算法&#xff09; 1&#xff0c;定义 给定n个集合&#xff08;每个集合都是有2个元素&#xff09;&#xff0c;再给出m个关系式&#xff08;形式大致是aVb1),求是否能够从每个集合选一个元素&#xff0c;并且元素满足上…

Citadel——Dusk网络的Zero-Knowledge KYC解决方案

1. 引言 近期&#xff0c;Dusk网络宣布其已支持名为Citadel的Zero-Knowledge KYC解决方案&#xff0c;使得用户和机构可控制其权限以及个人信息分享。该架构可用于all claim-based KYC requests&#xff0c;并让用户完全控制他们共享的信息以及与谁共享信息&#xff0c;同时完…

【CSDN的2022与2023】普普通通的三年,从懵懂、焦虑到坚定、奋进,破除焦虑努力成为更好的自己

大家好&#xff0c;我是黄小黄&#xff01;一名普通的软件工程在读学生。最近终于闲下来了一丢丢&#xff01;借着休息之余&#xff0c;来写一篇年度总结散散心~与其说是年度总结&#xff0c;不如说是给大学生活与莽莽撞撞的自己一个交代叭&#xff01; 这些都是小标题~碎碎念1…

InstanceNorm LayerNorm

InstanceNorm && LayerNorm author: SUFEHeisenberg date: 2023/01/26 先说结论: 将Transformer类比于RNN&#xff1a;一个token就是一层layer&#xff0c;对一整句不如token有意义原生Bert代码或huggingface中用的都是InstanceNorm instead of LayerNorm&#xff…

厚积薄发打卡Day115:Debug设计模式<简单工厂、工厂方法、抽象工厂>

厚积薄发打卡Day115&#xff1a;Debug设计模式<简单工厂、工厂方法、抽象工厂> 简单工厂 定义 由一个工厂对象决定创建出哪一种产品类的实例&#xff08;严格意义并不是设计模式&#xff0c;更是一种风格&#xff09; 类型&#xff1a;创建型&#xff0c;但不属于GOF…