java嵌套类数据成员

标签 java iterator nested-class

我有一个 AVLTREE 类,里面有一个内部类,它是一个迭代器。 迭代器仅由用户请求实例化。 假设我有这个代码:

tree.add(10);
tree.add(6);
tree.add(19);

Iterator<Integer> it1 = tree.iterator();
System.out.println(it1.next());
System.outrintln(it1.next());

tree.delete(10);

System.outrintln(it1.next());

系统将打印“null”,尽管树有另一个值:19。 在这种情况下,如何处理特定迭代器的实例并将其当前节点更改为已删除节点的后继节点?

谢谢!

最佳答案

在迭代底层集合时修改它们是一个有问题的情况,这就是为什么当您在 for< 中删除它们时,Java 的内置集合会向您抛出 ConcurrentModificationException 。例如, 循环。 iterator.remove() 是从集合中删除元素的更安全的方法。

至于接近迭代器,除非将集合的每个迭代器存储在某处并且让迭代器允许对其状态进行内部“调整”,否则您不能这样做,从长远来看,这不太可行。

关于java嵌套类数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23709343/

相关文章:

c++ - 为什么 InputIterators 只有一次通过?

java - 在接口(interface)中嵌套类在哪里有用?

c++ - 在这种情况下我应该使用嵌套类吗?

java - 使用父属性值对 jackson 进行多态反序列化

java - 在 Apache commons-math3 中计算 PolynomialCurveFitter 的 R 方

c++ - 在给定指向该元素的指针的情况下获取双端队列中元素的索引?

c++ - 给定一个类及其 friend 类,后者的内部类是否自动成为前一个类的 friend ?

java - Spring MVC + Hibernate validator + Velocity

java - 如果没有 Android Debug Bridge,如何使用 Eclipse?

c++ - 将 std::vector 传递给修改输入数组的函数