今天学习Iterator进行流操作,
删除集合的元素
我自己写的代码是这样的
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String next = iterator.next();
if (iterator.equals("A")) iterator.remove();
}
System.out.println(list);
}
发现执行删除不了,通过查阅资料才解开了我的疑惑
// Iterator 是一个对象,他不能够和集合的value相比,
// Iterator.next() 返回的当前Iterator的下一个节点的值,,同时Iterator后移
//注意,先返回值,在Iterator后移,这时再用Iterator.remove() 就是删除对应的节点了
正确代码
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
if (iterator.next().equals("A")) iterator.remove();
}
System.out.println(list);
}
ListIterator的前驱方法相同使用