在循环遍历ArrayList时从ObjectList中删除Object

时间:2015-03-24 19:34:49

标签: java arraylist

我想比较一个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());
        }
    }
}

谢谢! (除非有人还有其他要补充的内容)

0 个答案:

没有答案