🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 如何在 Java 中清空`ArrayList` > 原文: [https://beginnersbook.com/2013/12/how-to-empty-an-arraylist-in-java/](https://beginnersbook.com/2013/12/how-to-empty-an-arraylist-in-java/) 有两种方法可以清空`ArrayList` - 使用 [`ArrayList.clear()`](https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#clear())方法或借助 [`ArrayList.removeAll()`](https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#removeAll(java.util.Collection))方法。尽管两种方法都执行相同的任务,但它们清空`List`的方式却截然不同。 让我们先看下面的例子,然后我们将看到`clear()`和`removeAll()`之间的实现和区别。 ```java package beginnersbook.com; import java.util.ArrayList; import java.io.*; public class Details { public static void main(String [] args) { ArrayList<String> al1=new ArrayList<String>(); al1.add("abc"); al1.add("xyz"); System.out.println("ArrayList before clear: "+al1); al1.clear(); System.out.println("ArrayList after clear: "+al1); ArrayList<String> al2=new ArrayList<String>(); al2.add("text 1"); al2.add("text 2"); System.out.println("ArrayList before removeAll: "+al2); al2.removeAll(al2); System.out.println("ArrayList before removeAll: "+al2); } } ``` 输出: ```java ArrayList before clear: [abc, xyz] ArrayList after clear: [] ArrayList before removeAll: [text 1="text" 2="2" language="1,"][/text] ArrayList before removeAll: [] ``` 因为你们两个方法都可以完成相同的工作,所以它们会清空`ArrayList`。是时候确定哪种方法可以提供良好的性能。 `clear()`方法的实际代码: ```java public void clear() { for (int i = 0; i < size; i++) arraylist[i] = null; size = 0; } ``` 这里`arraylist`是`ArrayList`类的一个实例。 代码`removeAll()`方法: ```java public boolean removeAll(Collection c) { boolean ismodified = false; Iterator iterator = iterator(); while (iterator.hasNext()) { if (c.contains(iterator.next())) { iterator.remove(); ismodified = true; } } return ismodified; } ``` 通过查看这两种方法的代码,我们可以很好地说,与`removeAll()`方法相比,`clear()`方法提供了更好的性能。 `clear`的性能:`O(n)` `removeAll`的性能:`O(n^2)`