Java SE 8 是否有对或元组?
我正在Java SE 8中玩懒惰的函数操作,并且我想将索引设置为一对/元组,然后基于第二个元素,最后只输出索引。map
i
(i, value[i])
filter
value[i]
我必须仍然遭受这样的痛苦:在lambda和流的大胆新时代,Java中的C++ Pair<L,R>的等价物是什么?
更新:我提出了一个相当简化的示例,其中包含@dkatzel在下面的答案之一中提供的整洁解决方案。但是,它不会泛化。因此,让我添加一个更一般的例子:
package com.example.test;
import java.util.ArrayList;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
boolean [][] directed_acyclic_graph = new boolean[][]{
{false, true, false, true, false, true},
{false, false, false, true, false, true},
{false, false, false, true, false, true},
{false, false, false, false, false, true},
{false, false, false, false, false, true},
{false, false, false, false, false, false}
};
System.out.println(
IntStream.range(0, directed_acyclic_graph.length)
.parallel()
.mapToLong(i -> IntStream.range(0, directed_acyclic_graph[i].length)
.filter(j -> directed_acyclic_graph[j][i])
.count()
)
.filter(n -> n == 0)
.collect(() -> new ArrayList<Long>(), (c, e) -> c.add(e), (c1, c2) -> c1.addAll(c2))
);
}
}
这将给出不正确的输出,其输出对应于所有 为 的三列的计数。我需要的是这三列的索引。正确的输出应为 。我怎样才能得到这个结果?[0, 0, 0]
false
[0, 2, 4]