java - 我可以在没有局部变量的情况下编写 Iterator.next() 的实现吗(双链表)
问题描述
我有一个任务,我应该在其中创建一个给定的双向链表类 Iterable。我不允许更改或添加任何额外的方法。这段代码工作得很好,我只是好奇我是否可以在不使用局部变量的情况下编写它。n
是迭代器所在的当前节点。n.succ
是列表中的下一个节点(如果没有下一个值,则为 null)。n.pred
是列表中的前一个节点(如果没有前一个值,则为 null)。n.val
是存储在节点中的值。这是我目前拥有的(效果很好)。
/** Return the next element to enumerate. */
public @Override E next() throws NoSuchElementException {
if (!hasNext()) throw new NoSuchElementException();
Node n1 = n;
n = n.succ;
return n1.val;
}
我不能说
n = n.succ;
return n.pred.val;
因为如果n.succ
为null,那么n.pred
会抛出NullPointerException。
解决方案
推荐阅读
- javascript - 自动播放一页上有多个幻灯片的javascript幻灯片不起作用
- javascript - 如何在 Javascript 中对对象进行分组?
- java - 根据 GSI 索引和范围键从 Dynamo db 中获取所有列
- c# - 文本块未更新
- python - 使用嵌套字典替换字符串中的单词
- postgresql - Postgres 如何在没有 undo 日志的情况下支持回滚
- php - 无法使用 php 在数据库中存储尼泊尔日期
- spring-boot - Spring Boot 分布式事务
- python - 预期输入有 4 个维度,但得到的数组形状为 (32, 549, 1)
- python - 将 .fbx 文件中的 UV 更改合并回 Maya