Android:使用迭代器从列表中删除元素

时间:2014-11-04 16:58:59

标签: java android list iterator

     private void removeLettersFromMakeWords(List<String> a, List<String> b){
     Iterator<String> i = a.iterator();

     for(String s:b)
         while (i.hasNext()) {
            Object o = i.next();

            if(o.toString().equals(s)){
                i.remove();
                break;
            }
         }
    }

我使用迭代器遍历我的列表,如果匹配则从列表中删除一个元素。 例如:如果a = [a, y, f, z, b]b = [a, f] - >输出将为a = [y, z, b]

问题是a = [a, y, f, z, b]b = [f, a] - &gt;输出将为a = [a, y, z, b] 并且迭代器不会在开头删除[a]值。有没有办法重置迭代器,以便每次break迭代器从头开始?或者有更好的方法来解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

您无法“重置”迭代器,但只要您想再次从头开始迭代,就可以获得一个新的迭代器。像这样:

if (o.toString().equals(s)) {
     i.remove();
     i = a.iterator();
     break;
}

编辑:正如@ n​​jzk2在评论中所说,有更好的(内置)方法可以做到这一点。