如何在java8中使用lambda在多个列表中收集索引相同的元素
我现在使用的是Java8 我想做的是通过每个列表中元素的索引从不同的列表中选择元素 我有以下代码:如何在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) ); 我试过了,但没有得到结果。那么,您能给我一些提示吗?您可以创建列
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());