为什么Collectors.toList()不能处理原始集合? 您所在的位置:网站首页 list集合addall 为什么Collectors.toList()不能处理原始集合?

为什么Collectors.toList()不能处理原始集合?

2023-03-06 11:00| 来源: 网络整理| 查看: 265

(这可能与/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 实验室设备网 版权所有