使用 vavr 中的索引遍历列表
Iterate over list with indices in vavr
我正在使用 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
中实现此目的?
如果要访问索引,只需使用普通的 for 循环和 List.get(ix)
。
Vavr 有一个类似于 Scala 的 API。 Vavr 集合(又名 traversables)有一个名为 zipWithIndex()
的方法。它 returns 一个新集合,由元素和索引的元组组成。
此外,使用迭代器为我们节省了新的集合实例。
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
个实例。
更新: 我只是 added forEachWithIndex 到 Vavr。它将包含在下一个版本中。
免责声明:我是 Vavr 的创建者。
JMPL 是简单的 java 库,它可以模拟一些特征模式匹配,使用 Java 8 个特征。
这个库也支持简单的遍历集合。
Figure figure = new Rectangle();
foreach(listRectangles, (int w, int h) -> {
System.out.println("square: " + (w * h));
});
我正在使用 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
中实现此目的?
如果要访问索引,只需使用普通的 for 循环和 List.get(ix)
。
Vavr 有一个类似于 Scala 的 API。 Vavr 集合(又名 traversables)有一个名为 zipWithIndex()
的方法。它 returns 一个新集合,由元素和索引的元组组成。
此外,使用迭代器为我们节省了新的集合实例。
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
个实例。
更新: 我只是 added forEachWithIndex 到 Vavr。它将包含在下一个版本中。
免责声明:我是 Vavr 的创建者。
JMPL 是简单的 java 库,它可以模拟一些特征模式匹配,使用 Java 8 个特征。 这个库也支持简单的遍历集合。
Figure figure = new Rectangle();
foreach(listRectangles, (int w, int h) -> {
System.out.println("square: " + (w * h));
});