繁体   English   中英

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

[英]Android: removing elements from list with 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] ->输出将是a = [ a, y, z, b ]并且迭代器不会删除[ a ]开头的值。 有没有一种方法可以重置迭代器,以便每次break迭代器都从头开始? 还是有解决此问题的更好方法?

您不能“重置”迭代器,但是只要您想从头开始迭代,就可以得到一个新的迭代器。 像这样:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM