Java集合ArrayList详解

news2024/11/15 8:49:37

ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。

ArrayList 继承了 AbstractList ,并实现了 List 接口。

Java 数组 与 ArrayList

在Java中,我们需要先声明数组的大小,然后才能使用它。一旦声明了数组的大小,就很难更改它。

要解决此问题,我们可以使用ArrayList类。  java.util包中存在的ArrayList类允许我们创建可调整大小的数组。

使用前需要引入它,语法格式如下:

import java.util.ArrayList; // 引入 ArrayList 类

与数组不同,当我们向数组列表添加或删除元素时,数组列表(ArrayList类的对象)可以自动调整其容量。 因此,数组列表也称为动态数组。

创建ArrayList

这是我们可以在Java中创建数组列表的方法:

ArrayList<Type> arrayList= new ArrayList<>();

此处,Type指示数组列表的类型。例如,

//创建整数类型arraylist
ArrayList<Integer> arrayList = new ArrayList<>();

//创建字符串类型arraylist
ArrayList<String> arrayList = new ArrayList<>();

在上面的程序中,我们使用了Integer和String。 在这里,Integer是int类型的相应包装类。

包装类是包装原始数据类型的类。例如,Integer类包装了int类型,Float类包装了Float类型,等等。

注意:我们不能创建原始数据类型(如int,float,char等)的数组列表。相反,我们必须使用它们对应的包装器类。

对于字符串,String是一个类,没有包装类。因此,我们按原样使用String。

我们还可以使用List接口创建ArrayList。这是因为ArrayList类实现了List接口。

List<String> list = new ArrayList<>();

ArrayList的方法

ArrayList 提供了允许我们执行数组列表操作的各种方法。

将元素添加到ArrayList

1.使用 add() 方法

要将单个元素添加到数组列表,我们使用add()方法。例如,

import java.util.ArrayList;

class Main {
    public static void main(String[] args){
        ArrayList<String> animals = new ArrayList<>();

        //添加元素
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("ArrayList: " + animals);
    }
}

输出结果

ArrayList: [Dog, Cat, Horse]

2.使用索引号

我们还可以使用索引将元素添加到数组列表中。例如,

import java.util.ArrayList;

class Main {
    public static void main(String[] args){
        ArrayList<String> animals = new ArrayList<>();

        //添加元素
        animals.add(0,"Dog");
        animals.add(1,"Cat");
        animals.add(2,"Horse");
        System.out.println("ArrayList: " + animals);
    }
}

输出结果

ArrayList: [Dog, Cat, Horse]

3.将一个数组列表的元素添加到另一个数组列表

要将数组列表的所有元素添加到新的数组列表,请使用addAll()方法。例如,

import java.util.ArrayList;

class Main {
    public static void main(String[] args){
        ArrayList<String> mammals = new ArrayList<>();
        mammals.add("Dog");
        mammals.add("Cat");
        mammals.add("Horse");
        System.out.println("Mammals: " + mammals);

        ArrayList<String> animals = new ArrayList<>();
        animals.add("Crocodile");

        // 添加mammals所有元素到animals
        animals.addAll(mammals);
        System.out.println("Animals: " + animals);
    }
}

输出结果

Mammals: [Dog, Cat, Horse]
Animals: [Crocodile, Dog, Cat, Horse]

使用asList()初始化ArrayList

与数组不同,我们不能直接初始化数组列表。 但是,我们可以使用Arrays类的asList()方法来达到相同的效果。

为了使用asList()方法,我们必须先导入 java.util.Arrays 包。

例如,

import java.util.ArrayList;
import java.util.Arrays;

class Main {
    public static void main(String[] args) {
        //创建数组列表
        ArrayList<String> animals = new ArrayList<>(Arrays.asList("Cat", "Cow", "Dog"));
        System.out.println("ArrayList: " + animals);

        //访问数组列表中的元素
        String element = animals.get(1);
        System.out.println("访问元素: " + element);
    }
}

输出结果

ArrayList: [Cat, Cow, Dog]
访问元素: Cow

在上面的示例中,请注意以下表达式:

new ArrayList<>(Arrays.asList(("Cat", "Cow", "Dog"));

在这里,我们首先在3个元素的数组:"Cat","Cow",和"Dog"。然后,该asList()方法用于将数组转换为数组列表。

访问ArrayList的元素

1.使用get()方法

要随机访问数组列表的元素,我们使用get()方法。例如,

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList<String> animals= new ArrayList<>();

        //在数组列表中添加元素
        animals.add("Dog");
        animals.add("Horse");
        animals.add("Cat");
        System.out.println("ArrayList: " + animals);

        //从数组列表中获取元素
        String str = animals.get(0);
        System.out.print("索引0处的元素: " + str);
    }
}

输出结果

ArrayList: [Dog, Horse, Cat]
索引0处的元素: Dog

2.使用 iterator() 方法

要按顺序访问数组列表的元素,我们使用iterator()方法。我们必须导入 java.util.Iterator 包才能使用此方法。例如,

import java.util.ArrayList;
import java.util.Iterator;

class Main {
    public static void main(String[] args){
        ArrayList<String> animals = new ArrayList<>();

        //在数组列表中添加元素
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        animals.add("Zebra");

        //创建一个Iterator对象
        Iterator<String> iterate = animals.iterator();
        System.out.print("ArrayList: ");

        //使用Iterator的方法访问元素
        while(iterate.hasNext()){
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

输出结果

ArrayList: Dog, Cat, Horse, Zebra,

注意事项

  • hasNext() - 如果数组列表中有下一个元素,则返回true。

  • next()  -  返回数组列表中的下一个元素

更改ArrayList元素

要更改数组列表的元素,我们可以使用set()方法。例如,

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList<String> animals= new ArrayList<>();
        //在数组列表中添加元素
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("ArrayList: " + animals);

        //更改数组列表的元素
        animals.set(2, "Zebra");
        System.out.println("修改后的ArrayList: " + animals);
    }
}

输出结果

ArrayList: [Dog, Cat, Horse]
修改后的ArrayList: [Dog, Cat, Zebra]

删除ArrayList元素

1.使用 remove() 方法

要从数组列表中删除元素,我们可以使用remove()方法。例如,

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList<String> animals = new ArrayList<>();

        //在数组列表中添加元素
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("初始ArrayList: " + animals);

        //从索引2中删除元素
        String str = animals.remove(2);
        System.out.println("最终ArrayList: " + animals);
        System. out.println("删除元素: " + str);
    }
}

输出结果

初始ArrayList: [Dog, Cat, Horse]
最终ArrayList: [Dog, Cat]
删除元素: Horse

2.使用 removeAll() 方法

要从数组列表中删除所有元素,我们使用removeAll()方法。例如,

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList<String> animals = new ArrayList<>();

        // 在ArrayList中添加元素
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("初始ArrayList: " + animals);

        // 删除所有元素
        animals.removeAll(animals);
        System.out.println("最终ArrayList: " + animals);
    }
}

输出结果

初始ArrayList: [Dog, Cat, Horse]
最终ArrayList: []

3.使用 clear() 方法

我们还可以使用clear()方法从数组列表中删除所有元素。例如,

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList<String> animals= new ArrayList<>();

        //在数组列表中添加元素
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("Initial ArrayList: " + animals);

        //删除所有元素
        animals.clear();
        System.out.println("Final ArrayList: " + animals);
    }
}

输出结果

初始ArrayList: [Dog, Cat, Horse]
最终ArrayList: []

注意:clear()方法比removeAll()方法更高效。

遍历 ArrayList

1.使用 for 循环

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        //创建数组列表
        ArrayList<String> animals = new ArrayList<>();
        animals.add("Cow");
        animals.add("Cat");
        animals.add("Dog");
        System.out.println("ArrayList: " + animals);

        //使用for循环
        System.out.println("访问所有元素: ");

        for(int i = 0; i < animals.size(); i++) {
            System.out.print(animals.get(i));
            System.out.print(", ");
        }
    }
}

输出结果

ArrayList: [Cow, Cat, Dog]
访问所有元素:
Cow, Cat, Dog,

2.使用 forEach 循环

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        // 创建数组列表
        ArrayList<String> animals = new ArrayList<>();
        animals.add("Cow");
        animals.add("Cat");
        animals.add("Dog");
        System.out.println("ArrayList: " + animals);

        //使用forEach循环
        System.out.println("访问所有元素:  ");
        for(String animal : animals) {
            System.out.print(animal);
            System.out.print(", ");
        }
    }
}

输出结果

ArrayList: [Cow, Cat, Dog]
访问所有元素:
Cow, Cat, Dog,

在两个示例中,我们都使用循环访问了数组列表的各个元素。

获取ArrayList的长度

要获取数组列表的长度,我们使用size()方法。例如,

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList<String> animals= new ArrayList<>();

        // 在arrayList中添加元素
        animals.add("Dog");
        animals.add("Horse");
        animals.add("Cat");
        System.out.println("ArrayList: " + animals);

        //获取arrayList的大小
        System.out.println("arrayList的大小: " + animals.size());
    }
}

输出结果

ArrayList: [Dog, Horse, Cat]
arrayList的大小: 3

对ArrayList的元素进行排序

要对数组列表的元素进行排序,我们使用Collections类的sort()方法。为了使用它,我们必须先导入java.util.Collections包。

默认情况下,排序以字母或数字升序进行。例如,

import java.util.ArrayList;
import java.util.Collections;

class Main {
    public static void main(String[] args){
        ArrayList<String> animals= new ArrayList<>();

        //在数组列表中添加元素
        animals.add("Horse");
        animals.add("Zebra");
        animals.add("Dog");
        animals.add("Cat");

        System.out.println("未排序的ArrayList: " + animals);

        //对数组列表进行排序
        Collections.sort(animals);
        System.out.println("排序后的ArrayList: " + animals);
    }
}

输出结果

未排序的ArrayList: [Horse, Zebra, Dog, Cat]
排序后的ArrayList: [Cat, Dog, Horse, Zebra]

要了解有关对数组列表进行排序的更多信息,请访问Java ArrayList sort。

Java ArrayList转换为数组

在Java中,我们可以使用toArray()方法将数组列表转换为数组。例如,

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList<String> animals= new ArrayList<>();

        //在数组列表中添加元素
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("ArrayList: " + animals);

        //创建一个新的String类型数组
        String[] arr = new String[animals.size()];

        //将ArrayList转换成数组
        animals.toArray(arr);
        System.out.print("Array: ");
        for(String item:arr) {
            System.out.print(item+", ");
        }
    }
}

输出结果

ArrayList: [Dog, Cat, Horse]
Array: Dog, Cat, Horse,

Java Array转换为ArrayList

我们还可以将数组转换为数组列表。为此,我们可以使用Arrays类的asList()方法。

要使用asList(),我们必须先导入java.util.Arrays包。例如,

import java.util.ArrayList;
import java.util.Arrays;

class Main {
    public static void main(String[] args) {
        //创建一个字符串类型的数组
        String[] arr = {"Dog", "Cat", "Horse"};
        System.out.print("Array: ");

        //打印数组
        for(String str: arr) {
            System.out.print(str);
            System.out.print(" ");
        }

        //从数组创建ArrayList
        ArrayList<String> animals = new ArrayList<>(Arrays.asList(arr));
        System.out.println("\nArrayList: " + animals);
    }
}

输出结果

Array: Dog, Cat, Horse
ArrayList: [Dog, Cat, Horse]

在上面的程序中,我们首先创建了String类型的数组arr。

然后,我们使用asList()方法将数组转换为数组列表。

Java ArrayList转换为字符串

要将数组列表转换为字符串,可以使用toString()方法。例如

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList<String> animals = new ArrayList<>();

        //在ArrayList中添加元素
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("ArrayList: " + animals);

        //将ArrayList转换为字符串
        String str = animals.toString();
        System.out.println("String: " + str);
    }
}

输出结果

ArrayList: [Dog, Cat, Horse]
String: [Dog, Cat, Horse]

注意: toString()将整个数组列表转换为单个String。

其他的引用类型

ArrayList 中的元素实际上是对象,在以上实例中,数组列表元素都是字符串 String 类型。

如果我们要存储其他类型,而 <E> 只能为引用数据类型,这时我们就需要使用到基本类型的包装类。

基本类型对应的包装类表如下:

此外,BigInteger、BigDecimal 用于高精度的运算,BigInteger 支持任意精度的整数,也是引用类型,但它们没有相对应的基本类型。

ArrayList<Integer> li=new ArrayList<>();     // 存放整数元素
ArrayList<Character> li=new ArrayList<>();   // 存放字符元素

Java ArrayList更多方法

Java ArrayList 常用方法列表如下:

方法描述
add()将元素插入到指定位置的 arraylist 中
addAll()添加集合中的所有元素到 arraylist 中
clear()删除 arraylist 中的所有元素
clone()复制一份 arraylist
contains()判断元素是否在 arraylist
get()通过索引值获取 arraylist 中的元素
indexOf()返回 arraylist 中元素的索引值
removeAll()删除存在于指定集合中的 arraylist 里的所有元素
remove()删除 arraylist 里的单个元素
size()返回 arraylist 里元素数量
isEmpty()判断 arraylist 是否为空
subList()截取部分 arraylist 的元素
set()替换 arraylist 中指定索引的元素
sort()对 arraylist 元素进行排序
toArray()将 arraylist 转换为数组
toString()将 arraylist 转换为字符串
ensureCapacity()设置指定容量大小的 arraylist
lastIndexOf()返回指定元素在 arraylist 中最后一次出现的位置
retainAll()保留 arraylist 中在指定集合中也存在的那些元素
containsAll()查看 arraylist 是否包含指定集合中的所有元素
trimToSize()将 arraylist 中的容量调整为数组中的元素个数
removeRange()删除 arraylist 中指定索引之间存在的元素
replaceAll()将给定的操作内容替换掉数组中每一个元素
removeIf()删除所有满足特定条件的 arraylist 元素
forEach()遍历 arraylist 中每一个元素并执行特定操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/833848.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jmeter教程

目录 安装与配置 一&#xff1a;下载jdk——配置jdk环境变量 二&#xff1a;下载JMeter——配置环境变量 安装与配置 一&#xff1a;下载jdk——配置jdk环境变量 1.新建环境变量变量名:JAVA_HOME变量值&#xff1a;&#xff08;即JDK的安装路径&#xff09; 2.编辑Path%J…

Visual Studio 2022的MFC框架——应用程序向导

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天我们来重新审视一下Visual Studio 2022开发工具下的MFC框架知识。 MFC(Microsoft Foundation Class&#xff0c;微软基础类库&#xff09;是微软为了简化程序员的开发工作所开发的一套C类的集合&#xf…

Pytest自动化测试框架setup 和 teardown

Pytest - setup 和 teardown 执行用例肯定有些需要前置条件或后置操作&#xff0c;例如前置的用户登陆&#xff0c;后置的清理数据等操作&#xff1b; unittest提供了两种前置&#xff08;setup、setupClass&#xff09;和两种后置&#xff08;teardown、teardownClass&#x…

工业生产数据采集器网关是什么?设备如何现场管理?

在制造业数字化转型的浪潮下&#xff0c;工业生产数据采集成为了提高生产效率和质量的关键环节。工业生产数据采集器网关是一种用于连接工厂设备并采集生产数据的智能设备&#xff0c;具备工业级设计和多种联网方式。其中&#xff0c;HiWoo Box作为一款工业边缘网关&#xff0c…

HCIP入门静态实验

题目及要求 第一步&#xff1a;拓扑的搭建 第二步&#xff1a;路由、IP的配置 r1: <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sys r1 [r1]int loop [r1]int LoopBack 0 [r1-LoopBack0]ip add 192.168.1.65 27 [r1-LoopBack0]int loop 1 […

Sorting Layer与Order in Layer

就像是两个数相比&#xff0c;比如34与26&#xff0c;Sorting Layer决定的是十位&#xff0c;而Order in Layer决定的是个位&#xff0c;如果Sorting Layer的级别比较高&#xff0c;则可以忽略Order in Layer的比较&#xff0c;当比较的二者的Sorting Layer级别相同&#xff0c…

RF手机天线仿真介绍(一):金属边框天线和LDS天线

目录 简介LDS天线LDS天线仿真 金属边框天线金属边框天线仿真 简介 最早的手机是外置式天线&#xff0c;从NOKIA开始采用内置式天线&#xff0c;开始采用内置金属片&#xff08;一般是0.1MM厚的不锈钢片冲压而成&#xff09;&#xff0c;随后为降低成本&#xff0c;后来改用FPC…

C++ 数组

**数组是具有一定顺序关系的若干对象的集合体&#xff0c;组成数组的对象称为该数组的元素。**数组元素用数组名与带方括号的下标表示&#xff0c;同一数组的各个元素具有相同的类型。数组可以由除void型以外的任何一种类型构成&#xff0c;构成数组的类型和数组之间的关系&…

全排列、子集、组合、子序列

全排列、子集、组合、子序列 1、全排列①回溯&#xff08;DFS&#xff09;交换法②回溯&#xff08;DFS&#xff09;选择法③ 插入法 2、子集①回溯选择法② 动态规划 ③ 位运算方式组合 1、全排列 全排列&#xff08;Permutation&#xff09;&#xff1a;全排列是指给定一组元…

【漏洞复现】Ruijie RG-BCR860 后台命令执行漏洞(CVE-2023-3450)

文章目录 前言声明一、简介二、漏洞概述三、影响版本四、环境搭建五、漏洞复现六、修复方式 前言 Ruijie RG-BCR860 2.5.13 版本存在操作系统命令注入漏洞&#xff0c;攻击者可通过该漏洞获取服务器敏感信息&#xff0c;导致服务器被沦陷。 声明 请勿利用文章内的相关技术从事…

git删除已经提交的大文件

当你不小心把一个巨大的二进制文件提交到git仓库的时候&#xff0c;此时删除再提交也没有用了&#xff0c;大文件已经在仓库中留底了。另外比如需要删除某个需要保密的文件&#xff0c;都是相同的解决办法。 我本来想着把dll放在三方库里面提交到仓库里&#xff0c;省得在不同…

入门级:路由器配置静态路由

软件&#xff1a;cicso packet tracer 8.0 拓扑图&#xff1a;路由器&#xff1a;Router-PT、连接线&#xff1a;Serial DTE、连接口&#xff1a;Serial口&#xff08;serial是串行口,一般用于连接设备,不能连接电脑&#xff09; 实验步骤&#xff1a; 1、构建拓扑图&#xf…

paddlenlp:社交网络中多模态虚假媒体内容核查

初赛之环境配置篇 一、背景二、任务三、数据集1、初赛阶段2、评分标准 四、环境操作五、写在最后 一、背景 随着新媒体时代信息媒介的多元化发展&#xff0c;各种内容大量活跃在媒体内中&#xff0c;与此同时各类虚假信息也充斥着社交媒体&#xff0c;影响着公众的判断和决策。…

re学习(27)攻防世界 re1-100

参考文章&#xff1a;攻防世界逆向高手题之re1-100_沐一 林的博客-CSDN博客 查壳&#xff1a; 用IDA打开&#xff0c;分析 编写脚本&#xff1a; d"{daf29f59034938ae4efd53fc275d81053ed5be8c}" d1d[1:11] d2d[11:21] d3d[21:31] d4d[31:41] print(d3d4d1d2) #…

我去,这是什么黑科技!用信号处理方法抑制瞬态噪声

对于语音增强来说&#xff0c;噪声一般可以分为稳态噪声&#xff08;如白噪声&#xff09;和瞬态噪声&#xff08;有的地方也叫非稳态噪声&#xff0c;如键盘声&#xff09;。如果对语音降噪有一定了解的读者会知道&#xff0c;一般的信号处理方法对稳态噪声比较有效&#xff0…

FreeIPA Server/Client不同版本组合,对podman rootless container的支持

FreeIPA Server/Client不同版本组合&#xff0c;对podman rootless container的支持 根据实验&#xff0c; CentOS 7.9 yum仓库自带的FreeIPA Server 4.6.8&#xff0c; ipa client版本支持CentOS 7.9 yum仓库自带的FreeIPA Client 4.6.8不支持subids&#xff0c;podman调用…

SqlServer2008如何解析Json—附详细代码

1、在数据库中创建存储过程parseJSON&#xff0c;具体文件请在如下链接下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1a-aNmSKk_yvv9wQTP3DCsg?pwdyxwx 提取码&#xff1a;yxwx 2、具体使用方法如下&#xff1a; DECLARE UserParameter NVARCHAR(MAX){"…

单元测试之 - Spring框架提供的单元/集成测试注解

Spring框架提供了很多注解来辅助完成单元测试和集成测试(备注&#xff1a;这里的集成测试指容器内部的集成测试&#xff0c;非系统间的集成测试)&#xff0c;先看看Spring框架提供了哪些注解以及对应的作用。RunWith(SpringRunner.class) / ExtendWith(SpringExtension.class)&…

无代码开发(BIP旗舰版-YonBuilder)

目录 我的应用 新建领域 菜单管理 应用构建 新建应用 对象建模 新增业务对象 新增业务实体 页面建模 新增页面 编辑页面 发布管理 我的应用 角色管理 yonbuilder开发平台&#xff0c;提供标准服务和专业开发服务&#xff1b; 本篇文章只演示标准服务的可视化应用…

软件外包开发的GO语言特点

Go语言&#xff08;也称为Golang&#xff09;是由Google开发的一种编程语言。它具有许多特点&#xff0c;使其成为许多项目范围的优秀选择。Go语言适用于需要高性能、并发和简洁易读的项目&#xff0c;特别是面向网络和分布式应用的项目。今天和大家分享项目的特点及适用的项目…