所以我有一个Integer[][] data
我想要转换为ArrayList<ArrayList<Integer>>
,所以我尝试使用流并提出以下行:
ArrayList<ArrayList<Integer>> col = Arrays.stream(data).map(i -> Arrays.stream(i).collect(Collectors.toList())).collect(Collectors.toCollection(ArrayList<ArrayList<Integer>>::new));
但是最后一部分collect(Collectors.toCollection(ArrayList<ArrayList<Integer>>::new))
给了我一个错误,它无法转换ArrayList<ArrayList<Integer>> to C
。
答案 0 :(得分:4)
内部collect(Collectors.toList()
会返回List<Integer>
,而不是ArrayList<Integer>
,因此您应该将这些内部List
收集到ArrayList<List<Integer>>
中:
ArrayList<List<Integer>> col =
Arrays.stream(data)
.map(i -> Arrays.stream(i)
.collect(Collectors.toList()))
.collect(Collectors.toCollection(ArrayList<List<Integer>>::new));
或者,使用Collectors.toCollection(ArrayList<Integer>::new)
收集内部Stream
的元素:
ArrayList<ArrayList<Integer>> col =
Arrays.stream(data)
.map(i -> Arrays.stream(i)
.collect(Collectors.toCollection(ArrayList<Integer>::new)))
.collect(Collectors.toCollection(ArrayList<ArrayList<Integer>>::new));