原文: https://beginnersbook.com/2013/12/java-arraylist/

Arraylist类实现List接口,它基于Array数据结构。由于其提供的功能和灵活性,它被广泛使用。大多数开发人员选择Arraylist而不是数组,因为它是传统 java 数组的一个很好的替代品。ArrayListList接口的可调整大小的数组实现。它实现了所有可选的列表操作,并允许所有元素,包括null

java 中的`ArrayList` - 集合框架 - 图1

为什么ArrayList比数组好?

数组的限制是它有一个固定的长度,所以如果它已满,你不能再添加任何元素,同样如果有多个元素被删除,内存消耗将与它不收缩相同。

另一个ArrayList可以在添加和删除元素后动态增长和缩小(参见下图)。除了这些好处之外,ArrayList类还允许我们使用它的预定义方法,这使我们的任务变得简单。让我们看一下图表来理解从ArrayList中添加和删除元素,然后我们将看到这些程序。

在指定位置的ArrayList中添加元素:

java 中的`ArrayList` - 集合框架 - 图2

ArrayList中删除元素:

java 中的`ArrayList` - 集合框架 - 图3

本指南末尾有一些关于ArrayList的教程列表,请参考它以完全理解和学习ArrayList概念。

如何创建ArrayList

我们可以通过编写一个这样的简单语句来创建一个ArrayList

此语句创建一个名为alist且类型为StringArrayList。该类型确定列表将具有哪种类型的元素。由于此列表是String类型,因此要添加到此列表的元素将为String类型。

  1. ArrayList<String> alist=new ArrayList<String>();

类似地,我们可以创建接受int元素的ArrayList

  1. ArrayList<Integer> list=new ArrayList<Integer>();

如何将元素添加到ArrayList

我们使用add()方法向ArrayList添加元素,这种方法有几种变体,我们可以根据需要使用它们。例如:如果我们想在List的末尾添加元素,那么就这样做:

  1. alist.add("Steve"); //This will add "Steve" at the end of List

要在ArrayList中的指定位置添加元素,我们可以在add方法中指定索引,如下所示:

  1. alist.add(3, "Steve"); //This will add "Steve" at the fourth position

让我们写完整的代码:

  1. import java.util.*;
  2. class JavaExample{
  3. public static void main(String args[]){
  4. ArrayList<String> alist=new ArrayList<String>();
  5. alist.add("Steve");
  6. alist.add("Tim");
  7. alist.add("Lucy");
  8. alist.add("Pat");
  9. alist.add("Angela");
  10. alist.add("Tom");
  11. //displaying elements
  12. System.out.println(alist);
  13. //Adding "Steve" at the fourth position
  14. alist.add(3, "Steve");
  15. //displaying elements
  16. System.out.println(alist);
  17. }
  18. }

输出:

  1. [Steve, Tim, Lucy, Pat, Angela, Tom]
  2. [Steve, Tim, Lucy, Steve, Pat, Angela, Tom]

注意:由于索引从 0 开始,索引 3 将代表第四个位置而不是 3。

如何从ArrayList中删除元素?

我们使用remove()方法从ArrayList中删除元素,与add()方法相同,此方法也有一些变化。

例如:

  1. import java.util.*;
  2. class JavaExample{
  3. public static void main(String args[]){
  4. ArrayList<String> alist=new ArrayList<String>();
  5. alist.add("Steve");
  6. alist.add("Tim");
  7. alist.add("Lucy");
  8. alist.add("Pat");
  9. alist.add("Angela");
  10. alist.add("Tom");
  11. //displaying elements
  12. System.out.println(alist);
  13. //Removing "Steve" and "Angela"
  14. alist.remove("Steve");
  15. alist.remove("Angela");
  16. //displaying elements
  17. System.out.println(alist);
  18. //Removing 3rd element
  19. alist.remove(2);
  20. //displaying elements
  21. System.out.println(alist);
  22. }
  23. }

输出:

  1. [Steve, Tim, Lucy, Pat, Angela, Tom]
  2. [Tim, Lucy, Pat, Tom]
  3. [Tim, Lucy, Tom]

迭代ArrayList

在上面的例子中,我们只是通过引用ArrayList实例来显示ArrayList元素,这绝对不是显示元素的正确方法。显示元素的正确方法是使用像这样的高级for循环。

  1. import java.util.*;
  2. class JavaExample{
  3. public static void main(String args[]){
  4. ArrayList<String> alist=new ArrayList<String>();
  5. alist.add("Gregor Clegane");
  6. alist.add("Khal Drogo");
  7. alist.add("Cersei Lannister");
  8. alist.add("Sandor Clegane");
  9. alist.add("Tyrion Lannister");
  10. //iterating ArrayList
  11. for(String str:alist)
  12. System.out.println(str);
  13. }
  14. }

输出:

  1. Gregor Clegane
  2. Khal Drogo
  3. Cersei Lannister
  4. Sandor Clegane
  5. Tyrion Lannister

Java 中的ArrayList示例

此示例演示如何从ArrayList创建,初始化,添加和删除元素。在这个例子中,我们有一个类型为StringArrayList。我们使用add(String E)方法在ArrayList中添加了 5 个String元素,此方法在ArrayList的末尾添加了元素。

然后我们使用方法add(int index,String E)ArrayList中添加另外两个元素,此方法在指定的索引处添加指定的元素,索引 0 表示第一个位置,1 表示第二个位置。

然后我们从ArrayList中删除元素"Chaitanya""Harry",然后我们使用方法remove(int index)删除ArrayList的第二个元素。由于我们已将索引指定为 1(remove(1)),因此它将删除第二个元素。

  1. import java.util.*;
  2. public class JavaExample {
  3. public static void main(String args[]) {
  4. /* Creating ArrayList of type "String" which means
  5. * we can only add "String" elements
  6. */
  7. ArrayList<String> obj = new ArrayList<String>();
  8. /*This is how we add elements to an ArrayList*/
  9. obj.add("Ajeet");
  10. obj.add("Harry");
  11. obj.add("Chaitanya");
  12. obj.add("Steve");
  13. obj.add("Anuj");
  14. // Displaying elements
  15. System.out.println("Original ArrayList:");
  16. for(String str:obj)
  17. System.out.println(str);
  18. /* Add element at the given index
  19. * obj.add(0, "Rahul") - Adding element "Rahul" at first position
  20. * obj.add(1, "Justin") - Adding element "Justin" at second position
  21. */
  22. obj.add(0, "Rahul");
  23. obj.add(1, "Justin");
  24. // Displaying elements
  25. System.out.println("ArrayList after add operation:");
  26. for(String str:obj)
  27. System.out.println(str);
  28. //Remove elements from ArrayList like this
  29. obj.remove("Chaitanya"); //Removes "Chaitanya" from ArrayList
  30. obj.remove("Harry"); //Removes "Harry" from ArrayList
  31. // Displaying elements
  32. System.out.println("ArrayList after remove operation:");
  33. for(String str:obj)
  34. System.out.println(str);
  35. //Remove element from the specified index
  36. obj.remove(1); //Removes Second element from the List
  37. // Displaying elements
  38. System.out.println("Final ArrayList:");
  39. for(String str:obj)
  40. System.out.println(str);
  41. }
  42. }
  43. 输出:
  1. Original ArrayList:
  2. Ajeet
  3. Harry
  4. Chaitanya
  5. Steve
  6. Anuj
  7. ArrayList after add operation:
  8. Rahul
  9. Justin
  10. Ajeet
  11. Harry
  12. Chaitanya
  13. Steve
  14. Anuj
  15. ArrayList after remove operation:
  16. Rahul
  17. Justin
  18. Ajeet
  19. Steve
  20. Anuj
  21. Final ArrayList:
  22. Rahul
  23. Ajeet
  24. Steve
  25. Anuj

ArrayList类的方法

在上面的例子中,我们使用了add()remove()等方法。但是有许多方法可以直接使用ArrayList类的对象。我们来讨论一下ArrayList类的几个重要方法。

1)add(Object o):此方法向arraylist添加一个对象o

  1. obj.add("hello");

这个语句会在最后一个位置的arraylist中添加一个字符串hello

2) add(int index, Object o):它将对象o添加到给定索引处的ArrayList中。

  1. obj.add(2, "bye");

它将字符串再见添加到ArrayList的第二个索引(ArrayList以索引 0 开头的第三个位置)。

3)remove(Object o):从ArrayList中删除对象o

  1. obj.remove("Chaitanya");

该语句将从ArrayList中删除字符串"Chaitanya"

4)remove(int index):从给定索引中删除元素。

  1. obj.remove(3);

它将删除索引 3 的元素(列表的第 4 个元素 - 列表以 0 开头)。

5)set(int index, Object o):用于更新元素。它用对象o替换指定索引处的元素。

  1. obj.set(2, "Tom");

它将使用值Tom替换第 3 个元素(index = 2是第 3 个元素)。

6)int indexOf(Object o):给出对象o的索引。如果在列表中找不到该元素,则此方法返回值 -1。

  1. int pos = obj.indexOf("Tom");

这将给出列表中字符串Tom的索引(位置)。

7)Object get(int index):返回列表对象,该对象出现在指定的索引处。

  1. String str= obj.get(2);

函数get将返回存储在第 3 个位置(索引 2)的字符串,并将分配给字符串"str"。我们已将返回的值存储在字符串变量中,因为在我们的示例中,我们已经定义了ArrayListString类型。如果您有整数ArrayList,则返回的值应存储在整数变量中。

8)int size():它给出了ArrayList的大小 - 列表元素的数量。

  1. int numberofitems = obj.size();

9)boolean contains(Object o):它检查给定对象o是否存在于ArrayList中,如果它在那里则返回true,否则返回false

  1. obj.contains("Steve");

如果字符串"Steve"出现在列表中,它将返回true,否则我们将得到false

10)clear():**它用于一次性删除ArrayList的所有元素。下面的代码将删除其对象为objArrayList的所有元素。

  1. obj.clear();

Java ArrayList教程

以下是 beginnersbook.com 上发布的ArrayList教程列表。

ArrayList基础知识

排序

添加/删除

获取/搜索

关于ArrayList的其他教程

转换:

区别:

参考