Java程序:清空Java中的ArrayList
Java中的ArrayList是一个动态数组,其大小可以随着元素的添加或删除而增长或缩小。它是“java.util”包的一部分,是一个非常常用的集合。ArrayList很像数组,它将相同类型或同质类型的元素存储在连续的内存块中。在本文中,我们将了解在Java中清空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对象,其中一个不再使用。
此外,程序中其他地方仍然引用旧的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是一项简单的任务。