问:使用其他列表中的索引删除列表中存储的一些元素?例如。 列表1有a,b,c,d,e,列表2有0,2则应删除a和c。
我已经完成了这个,不知道这是多么高效的效果
public class RemoveByIndexFromOtherList {
public static void main(String[] args) {
List<String> lOriginal = new ArrayList<String>();
lOriginal.add("a");
lOriginal.add("b");
lOriginal.add("c");
lOriginal.add("d");
lOriginal.add("e");
List<Integer> indexes = new ArrayList<Integer>();
indexes.add(0);
indexes.add(2);
List<String> elemToRemove = new ArrayList<String>();
for (Integer index : indexes) {
String b = lOriginal.get(index.intValue());
elemToRemove.add(b);
}
for (String s : lOriginal) {
if (elemToRemove.contains(s)) {}
else {
System.out.println(s);
}
}
}
}
请建议,如何将其改进到公平有效的水平
答案 0 :(得分:0)
不确定您是否仍需要答案/建议。
您可以创建新列表并添加第二个列表中不存在的索引,而不是删除。然后只需更改参考。在您的情况下,如果列表中有多个“a”,则所有这些都将被删除。
建议:
import java.util.ArrayList;
import java.util.List;
public class RemoveByIndexFromOtherList {
public static void main(String[] args) {
List<String> lOriginal = new ArrayList<String>();
lOriginal.add("a");
lOriginal.add("b");
lOriginal.add("c");
lOriginal.add("d");
lOriginal.add("e");
lOriginal.add("a");
List<Integer> indexes = new ArrayList<Integer>();
indexes.add(0);
indexes.add(2);
List<String> newListOriginal = new ArrayList<String>();
for(int i = 0; i<lOriginal.size(); i++){
if(!indexes.contains(i)){
newListOriginal.add(lOriginal.get(i));
}
}
lOriginal = newListOriginal;
for(String str: lOriginal){
System.out.println(str);
}
}
}