我正在使用vavr库中的集合。
我有这样定义的元素列表:
List<Integer> integers = List.of(1, 2, 3);
如何遍历列表中的元素并同时访问索引?在Groovy中,有一个方法
eachWithIndex
。我在vavr
中寻找相似的东西。我想这样使用它:integers.eachWithIndex((int element, int index) -> {
System.out.println("index = " + index + " element = " + element);
})
如何在
vavr
中实现? 最佳答案
Vavr具有类似于Scala的API。 Vavr集合(又称可遍历)具有称为zipWithIndex()
的方法。它返回一个新集合,该集合由元素和索引的元组组成。
此外,使用Iterator可以为我们节省新的集合实例。
final List<Integer> integers = List.of(1, 2, 3);
integers.iterator().zipWithIndex().forEach(t ->
System.out.println("index = " + t._1 + " element = " + t._2)
);
但是,我看到创建一个新的集合不如Kotlin解决方案有效,尤其是当所有信息(元素和索引)都已经到位时。我喜欢将新方法
forEachWithIndex
添加到Vavr的集合中(就像在Kotlin中一样)的想法。更新:我们可以在Vavr的
forEachWithIndex(ObjIntConsumer<? super T>)
中添加Traversable
。它不仅是iterator().zipWithIndex().forEach(Consumer<Tuple2<T, Integer>>)
的快捷方式,因为它在迭代过程中不会创建Tuple2
实例。更新:我只是added forEachWithIndex对Vavr。它将包含在下一个版本中。
免责声明:我是Vavr的创建者。
关于java - 在vavr中使用索引遍历列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51667201/