gpt4 book ai didi

java - 从 ArrayList 中删除所有特定值

转载 作者:行者123 更新时间:2023-11-30 07:31:32 25 4
gpt4 key购买 nike

他们的预构建方法是否与 removeAll 不同,用于删除数组列表中的所有特定值?

我有一个删除 arrayLists 中重复项的方法,如下所示:

前 2 个 for for 循环可以工作并正确设置它,但我不知道第二个 for 循环该怎么做才能从 ArrayList 中删除所有 -1 的值,或者它们是更好的方法吗?

public static ArrayList<Integer> deleteDuplicates(ArrayList<Integer> a) {    
for (int i = 0; i < a.size(); i++) {
for (int j = (i + 1); j < a.size(); j++) {
if (a.get(i) == a.get(j) && i != j) {
a.set(j, -1);
}
}
}
for (int i = 0; i < a.size(); i++) {
if (a.get(i) == -1) {
a.removeAll(int -1);
}
}

底部的 removeAll(int -1) 内容无法编译,我只是将其留在那里,以便您可以看到我正在尝试执行的操作。

编辑:

将底部的 for 循环替换为:

  for (int i = 0; i < a.size(); i++) {
if (a.get(i) == -1) {
a.remove(i);
i--;
}
}

很确定这有效。

最佳答案

实现此目的的一种可能效率较低但更具可读性的方法是使用 Set 来过滤重复项:

public static ArrayList<Integer> deleteDuplicates(ArrayList<Integer> a) {
return new ArrayList<Integer>(new TreeSet<Integer>(a));
}

对于大多数情况,例如非常大的列表,这将是更好的选择。

有了这个选项,就无需转换 ArrayList通过声明您的首字母 ArrayList<Integer> 来一起完成所有操作作为Set<Integer> 。如果是这样,这个方法就没有必要了。

关于java - 从 ArrayList 中删除所有特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36049757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com