【发布时间】:2019-09-19 20:34:03
【问题描述】:
我正在学习 OOP,我遇到了数组列表。我想知道 remove() 函数实际上是如何工作的,以及最有效的使用方法是什么。
第一种删除所有“BB”的方法
public class ArrayListTest {
public static void main(String args[]){
ArrayList<String> Alist = new ArrayList<String>();
Alist.add("AA");
Alist.add("BB");
Alist.add("AA");
Alist.add("AA");
Alist.add("AA");
Alist.add("BB");
System.out.println("Original ArrayList : " + Alist);
int n = 0 ;
for (int i = 0; i < Alist.size(); i++){
n++;
Alist.remove("BB");
}
System.out.println(n);
System.out.println("Modified ArrayList : " + Alist);
}
}
输出
run:
Original ArrayList : [AA, BB, AA, AA, AA, BB]
4
Modified ArrayList : [AA, AA, AA, AA]
BUILD SUCCESSFUL (total time: 0 seconds)
第二种方法删除所有“BB”
public class ArrayListTest {
public static void main(String args[]){
ArrayList<String> Alist = new ArrayList<String>();
Alist.add("AA");
Alist.add("BB");
Alist.add("AA");
Alist.add("AA");
Alist.add("AA");
Alist.add("BB");
System.out.println("Original ArrayList : " + Alist);
int n = 0 ;
while(Alist.contains("BB")){
n++;
Alist.remove("BB");
}
System.out.println(n);
System.out.println("Modified ArrayList : " + Alist);
}
}
输出
run:
Original ArrayList : [AA, BB, AA, AA, AA, BB]
2
Modified ArrayList : [AA, AA, AA, AA]
BUILD SUCCESSFUL (total time: 0 seconds)
这令人困惑,因为在第一个中触发了计数器增加了几次,但它实际上更有效,还是“contains()”在每次检查后面的语句时循环整个数组列表场景。
【问题讨论】:
-
你是如何确定哪个 sn-p 更有效的?
-
实际上,我没有,这正是我想要问的......@Eran
标签: java performance oop arraylist