Java Android:使用迭代器从列表中删除元素 private void removeletters fromMakeWords(列表a、列表b){ 迭代器i=a.迭代器(); 用于(字符串s:b) while(i.hasNext()){ 对象o=i.next(); 如果(o.toString()等于){ i、 删除(); 打破 } } }
我使用迭代器循环遍历列表,如果存在匹配项,则从列表中删除一个元素。 例如:如果Java Android:使用迭代器从列表中删除元素 private void removeletters fromMakeWords(列表a、列表b){ 迭代器i=a.迭代器(); 用于(字符串s:b) while(i.hasNext()){ 对象o=i.next(); 如果(o.toString()等于){ i、 删除(); 打破 } } },java,android,list,iterator,Java,Android,List,Iterator,我使用迭代器循环遍历列表,如果存在匹配项,则从列表中删除一个元素。 例如:如果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迭代器都从头开始?或者有更好的方法解决这个问题吗?您不能“重置”迭代器,但只要想从头开始迭代,就可以得到一个新的迭代器。像这样: private void remo
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
迭代器都从头开始?或者有更好的方法解决这个问题吗?您不能“重置”迭代器,但只要想从头开始迭代,就可以得到一个新的迭代器。像这样:
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;
}
}
}
编辑:正如@njzk2在他的评论中所说的,有更好的(内置)方法来实现这一点。问题是,您永远不会重置迭代器。您可以简单地为b的每个字符串创建一个新的迭代器。但是,我建议只使用
a.removeAll(b)
而不是所有这些代码。谢谢,这非常简单,这太棒了!还有,你的搬迁费是多少simpler@user2456977的确但是,由于主题是“使用迭代器从列表中删除元素”…)
if (o.toString().equals(s)) {
i.remove();
i = a.iterator();
break;
}