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());
添加回答
舉報