改进的集合迭代器

2022-09-04 05:51:20

就个人而言,我发现java.util.Iterator提供的功能范围相当可悲。至少,我希望有这样的方法:

  • peek() 返回下一个元素而不将迭代器向前移动
  • previous() 返回上一个元素

虽然还有很多其他的可能性,如first()和last()。

有谁知道是否存在这样的第三方迭代器?它可能需要作为java.util.Iterator的装饰器实现,以便它可以与现有的java集合一起使用。理想情况下,它应该是“泛型感知”。

提前致谢,唐


答案 1

您只需使用 .previous()java.util.ListIterator

在这一点上的窥视很容易通过做一个

public <T> T peek(ListIterator<T> iter) throws NoSuchElementException {
    T obj = iter.next();
    iter.previous();
    return obj;
}

不幸的是,将其作为实用工具方法会更容易,因为每个集合类都实现自己的迭代器。要做一个包装器来获取某些接口上每个集合的peek方法,这将是相当多的工作。MyListIterator