3 回答
TA贡献1839条经验 获得超15个赞
问题是:你根本不需要Iterator你想要做的事情。您可以使用列表的方法一一搜索列表中的每个项目。
试试这个代码,看看它是否适合你:
public class JavaApplication255 {
public static void main(String[] args) {
// write your code here
List<String> list = new ArrayList<>();
list.add("hi");
list.add("what");
list.add("who");
list.add("ok");
removeTwos(list);
System.out.println(list);
}
public static void removeTwos(List<String> stringList){
for(int i = stringList.size() - 1; i >= 0 ; i--){
String string = stringList.get(i);
if (string.length() == 2){
stringList.remove(string);
}
}
}
}
TA贡献1966条经验 获得超4个赞
要Iterator针对此问题使用 ,您可以将removeTwos方法编辑为如下所示:
public static String removeTwos(List<String> stringList) {
Iterator<String> itr = stringList.iterator();
while (itr.hasNext()) {
String value = itr.next();
if (value.length() == 2) {
System.out.println(value);
itr.remove();
}
}
return stringList.toString();
}
使用 时Iterator,在循环遍历列表时从列表中删除元素是安全的。这是一个证明它是安全的链接。
TA贡献1963条经验 获得超6个赞
除非您需要使用 iter,否则使用流和过滤器很容易 1 班轮。
List<String> noTwos = list.stream().filter(s-> s.length() != 2).collect(Collectors.toList());
添加回答
举报