Java ArrayList 类(详解)

发布时间:2025-12-09 16:14:56 浏览次数:11

ArrayList

  • 一、ArrayList 是什么?
  • 二、Java ArrayList 方法
  • 三、案例演示
    • 结果:

一、ArrayList 是什么?

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

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

ArrayList 类位于 java.util 包中,使用前需要引入它,语法格式如下:

import java.util.ArrayList; // 引入 ArrayList 类ArrayList<E> objectName =new ArrayList<>();  // 初始化

E: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。
objectName: 对象名。

二、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 中每一个元素并执行特定操作

三、案例演示

import java.util.ArrayList;import java.util.Comparator;/*** @Description: $ArrayList案例演示* @Author: dyq* @Date: $2021年2月3日*/public class ArrayListTest {public static void main(String[] args) {// 初始化一个String类型的数组ArrayList<String> a = new ArrayList();// 设置 arraylist的容量大小 nsureCapacity() 方法将动态数组大小调整为可以存放 6 个元素。//Java 中的 ArrayList 可动态调整大小。也就是说,如果我们在 arraylist 中添加 3 个以上的元素,它将自动调整自身大小,a.ensureCapacity(6);//add()方法增加a.add("妈妈");a.add("爸爸");a.add("哥哥");a.add("姐姐");a.add("弟弟");a.add("妹妹");System.out.println("数组内容为:"+a);System.out.println("元素数量为: "+a.size()); //返回 arraylist 里元素数量System.out.println("第二个元素:"+a.get(1)); // 访问第二个元素 ,注意:数组的索引值从 0 开始。a.set(2, "Wiki"); // 第一个参数为索引位置,第二个为要修改的值System.out.println("修改后数组内容为:"+a);a.replaceAll(e -> e.toUpperCase()); // 将所有元素更改为大写System.out.println("数组内容为:"+a);a.remove(3); // 删除第四个元素System.out.println("删除后数组内容为:"+a);/*removeIf() 方法的语法为:arraylist.removeIf(Predicate<E> filter)注:arraylist 是 ArrayList 类的一个对象。filter - 过滤器,判断元素是否要删除* */// 删除名称中带有 哥 的元素a.removeIf(e -> e.contains("哥"));System.out.println("删除名称中带有 哥 的 ArrayList: " + a);//使用 for 来迭代数组列表中的元素System.out.println("用for循环遍历数组为:");for (int i = 0; i < a.size(); i++) {System.out.println(a.get(i));}System.out.println("使用 for-each 来迭代元素");for (String i: a) {System.out.println(i);}// 输出 clone() 方法所返回的值System.out.println("clone() 返回值: " + a.clone());// 检查 Wiki 是否在这个数组中System.out.print("Wiki 是否存在于 arraylist: ");System.out.println(a.contains("Wiki"));// 查找位置索引值为 Wiki 的元素int position1 = a.indexOf("Wiki");System.out.println("Wiki 的索引位置: " + position1); // 注意:数组的索引值从 0 开始。// 元素进行升序排列a.sort(Comparator.naturalOrder());System.out.println("升序排序后: " + a); //升序排序后: [妈妈, 妹妹, 弟弟, 爸爸]// 降序a.sort(Comparator.reverseOrder());System.out.println("降序排序: " + a); //降序排序: [爸爸, 弟弟, 妹妹, 妈妈]// 将ArrayList转换为String类型/* String list = a.toString();System.out.println("转String类型后: " + list);*/// 获取 妈妈 最后一次出现的位置int position = a.lastIndexOf("妈妈");System.out.println("妈妈 最后出现的位置: " + position); //注意: Wiki已经 不在 arraylist 中若要查找 则会返回 -1// 调整容量为3 trimToSize() 方法可以删除未分配的空间并更改 ArrayList 的容量,使其等于 ArrayList 中的元素个数。a.trimToSize();System.out.println("ArrayList 1 大小: " + a.size());System.out.println("ArrayList 1: " + a);// 创建另一个动态数组ArrayList<String> a1 = new ArrayList<>();// 往动态数组中添加元素//a1.add("舅舅");a1.add("妈妈");a1.add("妹妹");System.out.println("ArrayList 2: " + a1);// 在a 和 a1 中保留公共的元素(取交集的意思)a1.retainAll(a);System.out.println("保留的元素: " + a1);// 检查动态数组1是否包含动态数组2 (包含与被包含的关系)boolean result1 = a.containsAll(a1);System.out.println("a 包含了a1 的所有元素: " + result1); //true// 检查数组2是否包含数组1boolean result2 = a1.containsAll(a);System.out.println("a1 包含了 a 的所有元素: " + result2);//removeAll() 和 clear() 方法功能都是一样都。但是 clear() 方法的比 removeAll() 更常被用到,因为 clear() 比 removeAll() 更快,更高效。// 删除所有元素/* a.clear();System.out.println("所有 clear() 方法后: " + a);*//*// 删除所有元素a.removeAll(a);System.out.println("所有 removeAll() 方法后: " + a);*/// 删除元素 Wikiboolean result = a.remove("Wiki");System.out.println("Wiki 是否被删除? " + result);System.out.println("修改后数组内容为:"+a);// 检查该数组是否为空result = a.isEmpty(); // falseSystem.out.println("数组 a 是否为空? " + result);// 元素位置为1到3 subList() 该 subList() 方法获取索引 1 到 3(不包括 3)元素 所以返回索引为1-2的数//System.out.println("元素位置为1到3 SubList: " + a.subList(1, 3));// 删除从索引值1到3的元素 removeRange() 方法是受保护的,所以如果要使用需要继承 ArrayList 类,继承后我们就可以使用 Main 类来创建一个动态数组。//removeRange() 方法不常用,我们通常可以使用 ArrayList subList() 和 ArrayList clear() 方法来实现删除元素。// 已经不用这个了 a.removeRange(1, 3);a.subList(1, 3).clear();System.out.println("删除后的 ArrayList: " + a);}}

结果:

数组内容为:[妈妈, 爸爸, 哥哥, 姐姐, 弟弟, 妹妹]元素数量为: 6第二个元素:爸爸修改后数组内容为:[妈妈, 爸爸, Wiki, 姐姐, 弟弟, 妹妹]数组内容为:[妈妈, 爸爸, WIKI, 姐姐, 弟弟, 妹妹]删除后数组内容为:[妈妈, 爸爸, WIKI, 弟弟, 妹妹]删除名称中带有 哥 的 ArrayList: [妈妈, 爸爸, WIKI, 弟弟, 妹妹]用for循环遍历数组为:妈妈爸爸WIKI弟弟妹妹使用 for-each 来迭代元素妈妈爸爸WIKI弟弟妹妹clone() 返回值: [妈妈, 爸爸, WIKI, 弟弟, 妹妹]Wiki 是否存在于 arraylist: falseWiki 的索引位置: -1升序排序后: [WIKI, 妈妈, 妹妹, 弟弟, 爸爸]降序排序: [爸爸, 弟弟, 妹妹, 妈妈, WIKI]妈妈 最后出现的位置: 3ArrayList 1 大小: 5ArrayList 1: [爸爸, 弟弟, 妹妹, 妈妈, WIKI]ArrayList 2: [妈妈, 妹妹]保留的元素: [妈妈, 妹妹]a 包含了a1 的所有元素: truea1 包含了 a 的所有元素: falseWiki 是否被删除? false修改后数组内容为:[爸爸, 弟弟, 妹妹, 妈妈, WIKI]数组 a 是否为空? false删除后的 ArrayList: [爸爸, 妈妈, WIKI]
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477