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是一个简单的任务。