【发布时间】:2010-03-23 15:40:09
【问题描述】:
如果您所做的只是简单的一次性迭代(即只有hasNext() 和next(),没有remove()),您是否可以保证线性时间性能和/或每次操作的摊销恒定成本?
这是在Iterator 合同中的任何地方指定的吗?
是否存在无法在线性时间内迭代的数据结构/Java Collection?
java.util.Scanner implements Iterator<String>。 Scanner 几乎不是数据结构(例如 remove() 完全没有意义)。这算不算设计失误?
像PrimeGenerator implements Iterator<Integer> 这样的东西是否被认为是糟糕的设计,或者这正是Iterator 的用途? (hasNext() 总是返回 true,next() 按需计算下一个数字,remove() 没有意义)。
同样,java.util.Random implements Iterator<Double> 也有意义吗?
如果一个类型实际上只使用了其 API 的三分之一,是否真的应该实现 Iterator? (即没有remove(),总是hasNext())
【问题讨论】:
-
不,不,是/否(我 认为),不,我觉得很好,不,因为 random 可以返回多种下一个类型 - 你选择哪一个?,最后:如果你有一些东西可以方便地使用该类型的迭代器并且不需要 remove/hasNext,那么对我来说肯定看起来不错
标签: java performance iterator