为什么Collectors.toList()不能处理原始集合? | 您所在的位置:网站首页 › list集合addall › 为什么Collectors.toList()不能处理原始集合? |
(这可能与/sf/ask/17360801/有关,但我恐怕还是没有得到它.所以我这样问我的问题,希望它能够得出一个我可以更容易理解的答案.) 通常,当我有一个Stream时,我可以使用Collectors类中的一个静态方法将其转换为集合: List strings = Stream.of("this", "is", "a", "list", "of", "strings") .collect(Collectors.toList());然而,类似的过程不适用于原始流,正如其他人注意到的那样: IntStream.of(3, 1, 4, 1, 5, 9) .collect(Collectors.toList()); // doesn't compile我可以这样做: IntStream.of(3, 1, 4, 1, 5, 9) .boxed() .collect(Collectors.toList());或者我可以这样做: IntStream.of(3, 1, 4, 1, 5, 9) .collect(ArrayList::new, ArrayList::add, ArrayList::addAll);问题是,为什么Collectors.toList()只为原始流做这个?难道没有办法指定包装类型吗?如果是这样,为什么这不起作用: IntStream.of(3, 1, 4, 1, 5, 9) .collect(Collectors.toCollection(ArrayList::new)); // nope任何见解将不胜感激. |
CopyRight 2018-2019 实验室设备网 版权所有 |