作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下场景:我有一个现有的迭代器 Iterator<String> it
然后我遍历它的头部(比如第一个 k 元素,它们是标记的元素,即它们以 '*' 开头)。知道标记元素结束的唯一方法是注意第 (k+1) 个元素未标记。
问题是,如果我这样做,迭代器 it
下次调用 next()
时将不再为我提供第一个值.
我想将这个迭代器传递给一个方法,因为它只是一个参数,我想避免更改它的签名和实现。我知道我可以这样做:
public void methodAcceptingIterator(Iterator<String> it) //current signature
//change it to
public void methodAcceptingIterator(String firstElement, Iterator<String> it)
但这看起来像是降低了代码的优雅性和通用性的变通方法/hack,所以我不想这样做。
有什么办法可以解决这个问题吗?
最佳答案
您可以使用 Guava 的 PeekingIterator (链接包含静态方法的 javadoc,给定一个 Iterator
,将返回一个包装 PeekingIterator
)。其中包括一个方法 T peek()
,它会向您显示下一个元素,但不会前进到它。
关于java - 迭代器检索第一个值并将其放回同一个迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12012033/
我有一个问题,我在我的 C++ 程序中错误的时间得到一个 int 作为输入,所以我需要稍后在 cin 上“放回”。然而,我能找到的最接近于执行此操作的是 istream 的推回功能。遗憾的是,这仅适用
当工具栏被拖离 GUI 然后关闭(将其返回到 GUI)时,为什么这段代码会抛出 IllegalArgumentException? 我能理解为什么在没有约束的情况下添加组件可能是不合适的,但在这种情况
我是一名优秀的程序员,十分优秀!