gpt4 book ai didi

java - 使用 vavr 中的索引遍历列表

转载 作者:行者123 更新时间:2023-11-29 04:17:02 24 4
gpt4 key购买 nike

我正在使用来自 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 集合(又名 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 解决方案,尤其是当所有信息都已到位(元素和索引)时。我喜欢添加新方法的想法 forEachWithIndex到 Vavr 的集合,就像在 Kotlin 中一样。

更新:我们可以添加 forEachWithIndex(ObjIntConsumer<? super T>)到 Vavr 的 Traversable .它不仅仅是 iterator().zipWithIndex().forEach(Consumer<Tuple2<T, Integer>>) 的快捷方式因为它不会创建 Tuple2迭代期间的实例。

更新:我只是added forEachWithIndex到 Vavr。它将包含在下一个版本中。

免责声明:我是 Vavr 的创造者。

关于java - 使用 vavr 中的索引遍历列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51667201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com