Java 集合 ArrayList清空

来源:这里教程网 时间:2026-02-17 20:13:12 作者:

有两种方法可以清空ArrayList – 使用 ArrayList.clear()方法或借助 ArrayList.removeAll()方法。尽管两种方法都执行相同的任务,但它们清空List的方式却截然不同。

让我们先看下面的例子,然后我们将看到clear()和removeAll()之间的实现和区别。

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);     }}

输出:

ArrayList before clear: [abc, xyz]ArrayList after clear: []ArrayList before removeAll: [text 1="text" 2="2" language="1,"][/text]ArrayList before removeAll: []

因为你们两个方法都可以完成相同的工作,所以它们会清空ArrayList。是时候确定哪种方法可以提供良好的性能。

clear()方法的实际代码:

public void clear() {    for (int i = 0; i < size; i++)        arraylist[i] = null;    size = 0;}

这里arraylist是ArrayList类的一个实例。

代码removeAll()方法:

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)

相关推荐