我遇到的面试题

删除List中指定元素

2022-03-17  本文已影响0人  CheckBox

删除ArrayList中的指定元素方案

我们准备一组测试数据。
/*构建测试数据*/
public static ArrayList<String> buildItems() {
    ArrayList<String> list = new ArrayList<>();
    list.add("a");
    list.add("b");
    list.add("a");
    list.add("a");
    return list;
}
1、第一种方案(使用for循环)
list = buildItems();
for (int i = 0; i < list.size(); i++) {
    if (list.get(i).equals("a")) {
        list.remove(i);
        // 移除后内部发生了位移,需要将指针-1。 
        --i;
    }
}
2、使用迭代器中提供的remove()函数。
list = buildItems();
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    if (iterator.next().equals("a")) {
        // 移除当前指针的值
        iterator.remove();
    }
}
3、使用while循环。
list = buildItems();
int index;
while ((index = list.indexOf("a")) != -1) {
    list.remove(index);
}

总结:方案1、2效率是最高的,方案3,indexOf()函数,内部会多次循环。
还有其他方案吗 ?

上一篇下一篇

猜你喜欢

热点阅读