【发布时间】:2012-08-17 19:29:13
【问题描述】:
我有以下情况:我有一个现有的迭代器 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,降低了代码的优雅性和通用性,所以我不想这样做。
有什么办法可以解决这个问题吗?
【问题讨论】:
标签: java collections iterator