尝试使用流 API 来查找块大小来解决问题。在.collect(Collectors.toList(ArrayList<int[]>::new))处给出错误。Java 8+ 流

Trying to solve a problem using stream API to find the chunk size. Giving error at .collect(Collectors.toList(ArrayList<int[]>::new)). Java 8+ Stream

提问人:Vibhanshu Jha 提问时间:12/8/2022 最后编辑:Vibhanshu Jha 更新时间:12/13/2022 访问量:42

问:

IntStream.iterate(0, i -> i + chunkSize)
            .limit((long) Math.ceil((double) input.length / chunkSize))
            .mapToObj(j -> Arrays.copyOfRange(input, j, j + chunkSize > input.length ? input.length : j + chunkSize))
            .collect(Collectors.toList(ArrayList<int[]>::new));
}

我试图使用 Java 8 流打印数组,它应该将 List<int[]> 类型返回给 main 函数。示例输入在代码中提到。

arraylist java-8 编码样式 lightweight-stream-api

评论


答:

1赞 ItsMoi 12/8/2022 #1

代码正在尝试创建一个 ,但用于创建列表的语法不正确。若要解决此问题,可以替换以下行:List<int[]>

.collect(Collectors.toList(ArrayList<int[]>::new));

用这一行:

.collect(Collectors.toList());

这将创建一个 using 默认实现,即 .List<int[]>ListArrayList

或者,您可以显式指定实现,如下所示:ArrayList

.collect(Collectors.toCollection(ArrayList::new));

这也将创建一个 using 实现。List<int[]>ArrayList

评论

2赞 Holger 12/8/2022
您还可以显式指定列表的元素类型,即 .但关键是,使用任何一个,不带参数或带有工厂参数。.collect(Collectors.toCollection(ArrayList<int[]>::new))toList()toCollection(…)