java - 为什么我不能在迭代时添加到 ListIterator?
问题描述
我试图在迭代它时添加到 ListIterator 但在检查它是否工作时 hasNext() 总是返回 false。
正如javadoc所说,ListIterator 是“列表的迭代器,它允许程序员在任一方向遍历列表,在迭代期间修改列表,并获取迭代器在列表中的当前位置。” 但是,当我尝试添加时,我既没有收到错误消息,也没有 ListIterator 获得新元素。
public void foo() {
List<String> bar = new ArrayList<String>();
bar.add("foobar");
ListIterator<String> quux = bar.listIterator();
while(quux.hasNext()) {
if(quux.next().equals("foobar")) {
quux.add("baz");
}
}
}
在这个函数结束时,我希望 ListIterator 包含新的字符串“baz”。但是,当我调用 hasNext() 方法时,它返回 false。该程序甚至通过了 if 语句,结果表明 add-method 没有做它应该做的事情。
解决方案
您似乎希望能够使用以下命令获取添加的元素next()
:
ListIterator 也没有获得新元素
[...]
在这个函数结束时,我希望 ListIterator 包含新的字符串“baz”。但是,当我调用 hasNext() 方法时,它返回 false
但是, ListIterator.add()的 JavaDoc明确指出情况并非如此:
新元素插入到隐式游标之前:对 next 的后续调用将不受影响
如果要在迭代中包含元素,可以将列表迭代器倒回一个位置:
if(quux.next().equals("foobar")) {
quux.add("baz");
quux.previous();
}
推荐阅读
- java - 在android中杀死应用程序后执行代码
- kubernetes - Kubernetes Pod 数量与 CPU 请求数量
- html - ios:如何在不将内容拉到顶部的情况下显示键盘?
- css - 容器的孩子在容器上悬停时也会影响
- php - WordPress - wp_insert_post() 避免与 ACF 字段重复
- reactjs - 在 useEffect 显示 ReactJS axios 调用 - 警告:函数作为 React 子级无效
- html - 为什么我的 html 输入类型范围在移动设备上后立即失去活动状态?
- amazon-ec2 - RDP 连接到 Debian 10 EC2 实例
- javascript - 使用 Yup 和密钥进行验证
- jquery - 当我在文档就绪中调用另一个函数时,jQuery Datatable 功能不起作用