我已尝试this StackOverflow回答代码,但收到错误Cannot infer type argument(s) for <R> map(Function<? super T,? extends R>)
:
//data is int[][]
Arrays.stream(data)
.map(i -> Arrays.stream(i)
.collect(Collectors.toList()))
.collect(Collectors.toList());
答案 0 :(得分:6)
Arrays.stream
将遍历int[]
中的每个int[][]
。
您可以将int[]
转换为IntStream
。
然后,为了将int
s的流转换为List<Integer>
,
你首先要把它们装箱。
一旦装箱到Integer
,您就可以将它们收集到列表中。
最后将List<Integer>
的流收集到列表中。
List<List<Integer>> list = Arrays.stream(data)
.map(row -> IntStream.of(row).boxed().collect(Collectors.toList()))
.collect(Collectors.toList());
答案 1 :(得分:0)
尝试StreamEx
StreamEx.of(data).map(a -> IntStreamEx.of(a).boxed().toList()).toList();
或AbacusUtil,简单而有效:
Stream.of(data).map(a -> IntList.of(a).boxed()).toList();
// Or:
Seq.of(data).map(a -> IntList.of(a).boxed());
所有这些都是无效安全。如果data
为空