Java 在Java中清空ArrayList

Java 在Java中清空ArrayList

在Java中,ArrayList是一个动态数组,其大小可以随着被添加或删除的元素的数量而增长或缩小。它是“ java.util ”包的一部分,是一个非常常用的集合。ArrayList与数组非常相似,因为它在连续的内存块中存储相同类型或同构的元素。在本文中,我们将看到清空ArrayList的不同方法。

主要有4种方法可以清空Java中的ArrayList,如下:

  • 使用朴素方法

  • 使用clear()方法

  • 使用removeAll()方法

  • 分配一个新的ArrayList实例

现在让我们详细看一下每种方法及其Java实现。

1. 使用原生方法

这种方法不使用任何内建方法来删除ArrayList的元素,而是使用一个while循环。isEmpty()方法在ArrayList为空时返回true或false。while循环会继续执行,直到isEmpty()返回false,而在循环体内,每次都会删除第一个元素或索引为0的元素。一旦isEmpty()返回True,循环终止。可以将其视为一种手动和时间复杂度较高的方法,逐个从ArrayList中删除每个元素。

示例

import java.util.ArrayList;
public class EmptyArrayListExample {
   public static void main(String[] args) {

      ArrayList<String> list_of_languages = new ArrayList<String>();

      // Fill the ArrayList
      list_of_languages.add("Java");
      list_of_languages.add("Python");
      list_of_languages.add("C++");
      list_of_languages.add("R");
      list_of_languages.add("C#");
      list_of_languages.add("JavaScript");

      System.out.println("Original Arraylist: " + list_of_languages);

      // run a while loop till it becomes empty
      while (!list_of_languages.isEmpty()) {
         list_of_languages.remove(0); // remove the first element
      }
      // print the ArrayList after attempting to empty it
      System.out.println("Empty Arraylist: " + list_of_languages);
   }
}

输出

上述程序将产生以下输出 –

Original Arraylist: [Java, Python, C++, R, C#, JavaScript]
Empty Arraylist: []

2. 使用clear()方法

这种方法涉及使用ArrayList类的内置 clear() 方法,该方法不接受任何参数或返回任何值。这是清空ArrayList的最简单方法。

示例

import java.util.ArrayList;
public class EmptyArrayListExample {
   public static void main(String[] args) {
      // Fill the arraylist
      ArrayList<String> list_of_languages = new ArrayList<String>();

      // Add some elements to the list_of_languages
      list_of_languages.add("Java");
      list_of_languages.add("Python");
      list_of_languages.add("C++");
      list_of_languages.add("R");
      list_of_languages.add("C#");
      list_of_languages.add("JavaScript");
        
      // Print the original list_of_languages
      System.out.println("Original Arraylist: " + list_of_languages);

      // Use the clear() method to empty the list_of_languages
      list_of_languages.clear();

      // Print the empty list_of_languages
      System.out.println("Empty Arraylist: " + list_of_languages);
   }
}

输出

上述程序将产生以下输出 –

Original Arraylist: [Java, Python, C++, R, C#, JavaScript]
Empty Arraylist: []

3. 使用removeAll()方法

removeAll()方法也是ArrayList类内置的一个方法。该方法可以接受一个可选的参数,该参数是要从ArrayList中删除的另一个集合或元素集合。它返回一个布尔值,如果列表因函数调用而被更改,则返回true。如果没有传递任何元素给它,则会删除列表中的所有元素。

示例

import java.util.ArrayList;
public class EmptyArrayListExample {
   public static void main(String[] args) {

      ArrayList<String> list_of_languages = new ArrayList<String>();

      // Fill the ArrayList
      list_of_languages.add("Java");
      list_of_languages.add("Python");
      list_of_languages.add("C++");
      list_of_languages.add("R");
      list_of_languages.add("C#");
      list_of_languages.add("JavaScript");

      System.out.println("Original Arraylist: " + list_of_languages);

      // Use the removeAll() method to empty the list_of_languages
      list_of_languages.removeAll(list_of_languages);

      System.out.println("Empty Arraylist: " + list_of_languages);
   }
}

输出

上述程序将产生以下输出 –

Original Arraylist: [Java, Python, C++, R, C#, JavaScript]
Empty Arraylist: []

4. 分配一个新的ArrayList实例

这种技术涉及创建一个新的ArrayList实例,并将其再次分配给同一个变量。然而,尽管这种方法是有效的,但不推荐使用,因为它会创建不必要的开销,并可能导致潜在的内存泄漏。

当我们将一个新的ArrayList分配给同一个现有的ArrayList变量时,旧的ArrayList对象将变得可被垃圾收集器回收。垃圾收集过程不会立即发生,可能需要一些时间才能从内存中删除旧对象,这意味着我们可能在内存中有2个ArrayList对象,其中1个不再使用。

此外,旧的ArrayList对象仍然在程序的其他地方具有引用,即使它不再使用。这可能是潜在内存泄漏的原因,导致程序消耗的内存超过实际需要的量。

示例

import java.util.ArrayList;
public class EmptyArrayListExample {
   public static void main(String[] args) {

      ArrayList<String> list_of_languages = new ArrayList<String>();

      // Fill the ArrayList
      list_of_languages.add("Java");
      list_of_languages.add("Python");
      list_of_languages.add("C++");
      list_of_languages.add("R");
      list_of_languages.add("C#");
      list_of_languages.add("JavaScript");

      System.out.println("Original Arraylist: " + list_of_languages);

      // create and assign a new instance of the ArrayList to the old arrayList variable
      list_of_languages = new ArrayList<String>();

      System.out.println("Empty Arraylist: " + list_of_languages);
   }
}

输出

上述程序将产生以下输出 –

Original Arraylist: [Java, Python, C++, R, C#, JavaScript]
Empty Arraylist: []

结论

ArrayList是动态大小的数组,用于存储同类型的数据。ArrayList类提供了几种方法来清空ArrayList。这些方法包括clear()方法和removeAll()方法。除了这些内置方法外,还有另外两种方法可以清空ArrayList。这些方法包括删除ArrayList的每个元素的朴素方法,以及将一个新的ArrayList实例分配给相同变量的方法。在提到的四种方法中,最好使用clear()方法。第四种方法是重新分配一个ArrayList类的新实例来清空ArrayList,可能会有潜在问题,应该避免使用。ArrayList在Java中广泛使用,相比数组更加灵活。总体而言,清空ArrayList是一个简单的任务。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程