Vavr 有一个类似于 Scala 的 API。Vavr 集合(又名 traversables)有一个名为zipWithIndex()
. 它返回一个新集合,该集合由元素和索引的元组组成。
此外,使用迭代器为我们节省了新的集合实例。
final List<Integer> integers = List.of(1, 2, 3);
integers.iterator().zipWithIndex().forEach(t ->
System.out.println("index = " + t._1 + " element = " + t._2)
);
但是,我发现创建新集合不如 Kotlin 解决方案高效,尤其是当所有信息(元素和索引)都已经到位时。我喜欢在 Vavr 的集合中添加一种新方法的想法,forEachWithIndex
就像在 Kotlin 中一样。
更新:我们可以添加forEachWithIndex(ObjIntConsumer<? super T>)
到 Vavr 的Traversable
. 它不仅仅是一个快捷方式,iterator().zipWithIndex().forEach(Consumer<Tuple2<T, Integer>>)
因为它不会Tuple2
在迭代期间创建实例。
更新:我刚刚将 forEachWithIndex 添加到 Vavr。它将包含在下一个版本中。
免责声明:我是 Vavr 的创造者。