Sad*_*tun 2 java collections arraylist
public static void main(String[] args) {
List<String> list = new ArrayList();
list.add("AA");list.add("Aw");list.add("Aw");list.add("AA");
list.add("AA");list.add("A45");list.add("AA");
list.add("Aal");list.add("Af");list.add("An");
System.out.println(list);
for(int i=0;i<list.size();i++){
if(list.get(i).equals("AA")){
list.remove(i);
}
}
System.out.println(list);
}
Run Code Online (Sandbox Code Playgroud)
我目前正在尝试删除ArrayList中具有值的所有元素"AA",但是,它只删除其中的一些而不是全部.任何人都可以向我解释我做错了什么?
arraylist中的元素:
[AA, Aw, Aw, AA, AA, A45, AA, Aal, Af, An]
Run Code Online (Sandbox Code Playgroud)
我试图删除所有具有值的字符串后输出"AA".
[Aw, Aw, AA, A45, Aal, Af, An]
Run Code Online (Sandbox Code Playgroud)
为什么还在AA输出列表中?
这是错的:
for (int i = 0; i < list.size(); i++) {
if (list.get(i).equals("AA")) {
list.remove(i);
}
}
Run Code Online (Sandbox Code Playgroud)
因为只要你删除元素,你的列表就会改变它的大小....
你需要一个迭代器:
Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
if (iter.next().equals("AA")) {
iter.remove();
}
}
Run Code Online (Sandbox Code Playgroud)
使用java8:
List<String> newFilteredList = list.stream().filter(i -> !i.equals("AA")).collect(Collectors.toList());
System.out.println(newFilteredList);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |