Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java8中使用lambda在多个列表中收集索引相同的元素_Java_Lambda_Java 8_Java Stream - Fatal编程技术网

如何在java8中使用lambda在多个列表中收集索引相同的元素

如何在java8中使用lambda在多个列表中收集索引相同的元素,java,lambda,java-8,java-stream,Java,Lambda,Java 8,Java Stream,我现在使用的是Java8 我想做的是通过每个列表中元素的索引从不同的列表中选择元素 我有以下代码: List<List<Integer>> lst = Arrays.asList( Arrays.asList(1, 4, 7), Arrays.asList(2, 5, 8), Arrays.asList(3, 6, 9) ); 我试过了,但没有得到结果。那么,您能给我一些提示吗?您可以创建列

我现在使用的是Java8

我想做的是通过每个列表中元素的索引从不同的列表中选择元素

我有以下代码:

List<List<Integer>> lst = Arrays.asList(
            Arrays.asList(1, 4, 7),
            Arrays.asList(2, 5, 8),
            Arrays.asList(3, 6, 9)
    );

我试过了,但没有得到结果。那么,您能给我一些提示吗?

您可以创建列表索引的
IntStream
,并映射它们。下面的代码解决了您的问题(假设输入列表为非空且每行的值数相同):

List transposed=IntStream.range(0,lst.get(0).size())
.mapToObj(idx->lst.stream().map(l->l.get(idx)).collect(Collectors.toList())
.collect(Collectors.toList());

到目前为止您做了什么?请张贴您使用的代码,接受Tagir的回答
[[1,2,3],[4,5,6],[7,8,9]]
List<List<Integer>> transposed = IntStream.range(0, lst.get(0).size())
    .mapToObj(idx -> lst.stream().map(l -> l.get(idx)).collect(Collectors.toList()))
    .collect(Collectors.toList());