赞
踩
ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。
ArrayList 继承了 AbstractList ,并实现了 List 接口。
在Java中,我们需要先声明数组的大小,然后才能使用它。一旦声明了数组的大小,就很难更改它。
要解决此问题,我们可以使用ArrayList类。 java.util包中存在的ArrayList类允许我们创建可调整大小的数组。
使用前需要引入它,语法格式如下:
import java.util.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 提供了允许我们执行数组列表操作的各种方法。
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]
与数组不同,我们不能直接初始化数组列表。 但是,我们可以使用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()方法用于将数组转换为数组列表。
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() - 返回数组列表中的下一个元素
要更改数组列表的元素,我们可以使用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]
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()方法更高效。
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,
在两个示例中,我们都使用循环访问了数组列表的各个元素。
要获取数组列表的长度,我们使用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
要对数组列表的元素进行排序,我们使用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中,我们可以使用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,
我们还可以将数组转换为数组列表。为此,我们可以使用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()方法将数组转换为数组列表。
要将数组列表转换为字符串,可以使用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 常用方法列表如下:
方法 | 描述 |
---|---|
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 中每一个元素并执行特定操作 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。