原文:https://www.geeksforgeeks.org/arraylist-in-java/
ArrayList 是 集合框架 的一部分,存在于 java.util 包中。它为我们提供了 Java 中的动态数组。尽管它可能比标准数组慢,但在需要对数组进行大量操作的程序中会很有帮助。这个类可以在T5【Java . util】T6包中找到。
插图:
示例:下面的实现演示了如何创建和使用数组列表。
// Java program to demonstrate the
// working of ArrayList in Java
import java.io.*;
import java.util.*;
class ArrayListExample {
public static void main(String[] args)
{
// Size of the
// ArrayList
int n = 5;
// Declaring the ArrayList with
// initial size n
ArrayList<Integer> arrli
= new ArrayList<Integer>(n);
// Appending new elements at
// the end of the list
for (int i = 1; i <= n; i++)
arrli.add(i);
// Printing elements
System.out.println(arrli);
// Remove element at index 3
arrli.remove(3);
// Displaying the ArrayList
// after deletion
System.out.println(arrli);
// Printing elements one by one
for (int i = 0; i < arrli.size(); i++)
System.out.print(arrli.get(i) + " ");
}
}
Output
[1, 2, 3, 4, 5]
[1, 2, 3, 5]
1 2 3 5
由于 ArrayList 是一个动态数组,我们在创建它时不必指定大小,所以当我们动态添加和删除项目时,数组的大小会自动增加。虽然实际的库实现可能更复杂,但下面是一个非常基本的想法,它解释了当数组变满并且我们试图添加一个项目时数组的工作方式:
重要特征:
让我们深入了解一下Java ArrayList。请看下图:
在上图中,抽象列表、复制写数组列表和抽象顺序列表是实现列表接口的类。在每个提到的类中都实现了一个单独的功能。它们是:
为了创建一个数组列表,我们需要创建一个数组列表类的对象。数组列表类由各种构造函数组成,允许创建数组列表。以下是该类中可用的构造函数:
1。ArrayList(): 此构造函数用于构建空数组列表。如果我们希望创建一个名为 arr 的空数组列表,那么它可以创建为:
ArrayList arr = new ArrayList();
2。ArrayList(集合 c): 此构造函数用于构建一个数组列表,该列表用集合 c 中的元素初始化。假设我们希望创建一个 ArrayList arr,其中包含集合 c 中存在的元素,那么它可以创建为:
ArrayList arr =新的 ArrayList(c);
3。ArrayList(int capacity): 此构造函数用于构建指定初始容量的数组列表。假设我们希望创建一个初始大小为 N 的数组列表,那么它可以创建为:
ArrayList arr =新 array list(n);
注意:还可以创建通用数组列表:
java
// Creating generic integer ArrayList
ArrayListarrli = new ArrayList ();
让我们看看如何对所列的数组列表执行一些基本操作,我们将在实现每个操作的同时进一步讨论这些操作。T3】
操作 1: 添加元素
为了给数组列表添加一个元素,我们可以使用 add()方法。此方法被重载以基于不同的参数执行多个操作。它们如下:
示例:
// Java Program to Add elements to An ArrayList
// Importing all utility classes
import java.util.*;
// Main class
class GFG {
// Main driver method
public static void main(String args[])
{
// Creating an Array of string type
ArrayList<String> al = new ArrayList<>();
// Adding elements to ArrayList
// Cutom inpus
al.add("Geeks");
al.add("Geeks");
// Here we are mentioning the index
// at which it is to be added
al.add(1, "For");
// Printing all the elements in an ArrayList
System.out.println(al);
}
}
Output:
[Geeks, For, Geeks]
操作 2: 改变元素
添加元素后,如果我们想更改元素,可以使用 set() 方法来完成。因为数组列表是有索引的,所以我们想要改变的元素是由元素的索引来引用的。因此,此方法采用一个索引和需要插入该索引的更新元素。
例
// Java Program to Change elements in ArrayList
// Importing all utility classes
import java.util.*;
// main class
class GFG {
// Main driver method
public static void main(String args[])
{
// Creating an Arratlist object of string type
ArrayList<String> al = new ArrayList<>();
// Adding elements to Arraylist
// Custom input elements
al.add("Geeks");
al.add("Geeks");
// Adding specifying the index to be added
al.add(1, "Geeks");
// Printing the Arraylist elements
System.out.println("Initial ArrayList " + al);
// Setting element at 1st index
al.set(1, "For");
// Printing the updated Arraylist
System.out.println("Updated ArrayList " + al);
}
}
Output:
Initial ArrayList [Geeks, Geeks, Geeks]
Updated ArrayList [Geeks, For, Geeks]
操作 3: 去除元素
为了从数组列表中移除一个元素,我们可以使用 remove()方法。此方法被重载以基于不同的参数执行多个操作。它们如下:
例
// Java program to Remove Elements in ArrayList
// Importing all utility classes
import java.util.*;
// Main class
class GFG {
// Main driver method
public static void main(String args[])
{
// Creating an object of arraylist class
ArrayList<String> al = new ArrayList<>();
// Adding elements to ArrayList
// Custom addition
al.add("Geeks");
al.add("Geeks");
// Adding element at specific index
al.add(1, "For");
// Printing all elements of ArrayList
System.out.println("Initial ArrayList " + al);
// Removing element from above ArrayList
al.remove(1);
// Printing the updated Arraylist elements
System.out.println("After the Index Removal " + al);
// Removing this word element in ArrayList
al.remove("Geeks");
// Now printing updated ArrayList
System.out.println("After the Object Removal "
+ al);
}
}
Output:
Initial ArrayList [Geeks, For, Geeks]
After the Index Removal [Geeks, Geeks]
After the Object Removal [Geeks]
操作 4: 迭代数组列表
有多种方法可以迭代数组列表。最著名的方法是将基本的 for loop 与 get()方法结合使用,以获取特定索引处的元素,而 advanced for loop 。
例
// Java program to Iterate the elements
// in an ArrayList
// Importing all utility classes
import java.util.*;
// Main class
class GFG {
// Main driver method
public static void main(String args[])
{
// Creating an Arraylist of string type
ArrayList<String> al = new ArrayList<>();
// Adding elements to ArrayList
// using standard add() method
al.add("Geeks");
al.add("Geeks");
al.add(1, "For");
// Using the Get method and the
// for loop
for (int i = 0; i < al.size(); i++) {
System.out.print(al.get(i) + " ");
}
System.out.println();
// Using the for each loop
for (String str : al)
System.out.print(str + " ");
}
}
Output:
Geeks For Geeks
Geeks For Geeks
必读:Java 中的数组 vs 数组列表