Java 程序清空 ArrayList
Java 中的 ArrayList 是一个动态数组,其大小可以随着元素的添加或删除而增大或缩小。它是"java.util"包的一部分,是一种非常常用的集合。ArrayList 非常类似于数组,因为它将相同或同类类型的元素存储在连续的内存块中。在本文中,我们将介绍在 Java 中清空 ArrayList 的不同方法。
在 Java 中清空 ArrayList 主要有 4 种方法,如下所示 -
使用 Naïve 方法
使用 clear() 方法
使用 removeAll() 方法
分配新的 ArrayList 实例
现在让我们更详细地了解每种方法及其 Java 实现。
1. 使用 Naïve 方法
此方法不使用任何内置方法来删除 ArrayList 的元素,而是使用 while 循环。如果 ArrayList 为空,则 isEmpty() 方法返回 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>(); // 填充 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); // 运行 while 循环直到它变为空 while (!list_of_languages.isEmpty()) { list_of_languages.remove(0); // 删除第一个元素 } // 尝试清空 ArrayList 后打印该列表 System.out.println("Empty Arraylist: " + list_of_languages); } }
输出
上述程序将产生以下输出 -
Original Arraylist: [Java, Python, C++, R, C#, JavaScript] Empty Arraylist: []
2. Using the clear() Method
This approach involves the use of the ArrayList class’s in-built clear() method which doesn’t take in any parameters or return any values. It is the easiest way to empty an ArrayList.
示例
import java.util.ArrayList; public class EmptyArrayListExample { public static void main(String[] args) { // 填充 arraylist ArrayList<String> list_of_languages = new ArrayList<String>(); // 向 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"); // 打印原始 list_of_languages System.out.println("Original Arraylist: " + list_of_languages); // 使用 clear() 方法清空 list_of_languages list_of_languages.clear(); // 打印空的语言列表 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>(); // 填充 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); // 使用 removeAll() 方法清空 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>(); // 填充 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); // 创建并将 ArrayList 的新实例分配给旧 arrayList 变量 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() 方法。除了内置函数外,还有另外 2 种方法可以清空 ArrayList。这些方法包括删除 ArrayList 的每个元素的简单方法和将 ArrayList 的新实例分配给同一变量。在上述 4 种方法中,最好始终使用 clear() 方法。第 4 种方法是重新分配 ArrayList 类的新实例,该类负责清空 ArrayList,这种方法是可能的,应该避免。 ArrayList 在 Java 中很常用,与数组相比更灵活。总体而言,清空 ArrayList 是一项简单的任务。