更有效的方法从数组列表中删除元素

dgh*_*htr 1 java arraylist

我开发了类似这样的数组列表

ArrayList<String> list = new ArrayList<String>();
list.add("1");
list.add("8");
list.add("8");
list.add("3");
list.add("4");
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:如果我想从列表中删除"8",哪种方式更好?

第一种方式:

for(int i = 0; i < list.size(); i++) {
    if(list.get(i).equals("8")) {
        list.remove(i);
        i--;
    }
}
Run Code Online (Sandbox Code Playgroud)

第二种方式:

Iterator<String> iterator = list.iterator();
    while(iterator.hasNext())
        if(iterator.next().equals("8"))
            iterator.remove();
Run Code Online (Sandbox Code Playgroud)

现在请告知从性能的角度来看哪一个更高效,更快,还有其他任何类似内置功能的方法,我们可以删除重复而不需要迭代那么多.

Mar*_*nik 5

如果你只需要一组数字,那么使用HashSet而不是a List.如果您需要保留输入数字的顺序,请使用LinkedHashSet.至于删除,总是更喜欢与版本iterator,即使在您的特定情况下性能可能是可比较的.成语iterator比索引更广泛适用,例如,如果使用a LinkedList,索引会导致灾难性的表现.