我想比较一个ArrayList中的每个对象和其他每个对象,并从列表中删除一个对象,一旦匹配一次,就像这样:
List<Object> list = new ArrayList();
for(int i = 0; i<list.size();i++){
Object o1 = list.get(i);
for(int j = i+1; j<list.size();j++){
Object o2 = list.get(j);
if(match(o1, o2)){
// do something with o2
list.remove(j);
}
}
}
这会起作用,还是可以删除第一个循环尚未到达的对象,会导致问题?
编辑:
我尝试使用Iterator方法,这似乎工作(使用字符串列表作为测试)而不跳过项目
for(int i = 0; i<list.size();i++){
String s1 = list.get(i);
Iterator<String> it = list.subList(i+1, list.size()).iterator();
while(it.hasNext()){
String s2 = it.next();
if(s1.equals(s2)){
it.remove();
System.out.println(list.toString());
}
}
}
谢谢! (除非有人还有其他要补充的内容)