如何理解这个Java 8个流收集()方法?

user3207158:

我想转换一个int数组列表,我把使用Java 8流的不熟悉路线以及与此想出了

Arrays.stream(arr).boxed().collect(Collectors.toList());

我仍然有困难,充分了解这一行,主要是,

  1. 为什么Collectors.toList()在这种情况下,收益的ArrayList<Integer>实现List接口?为什么不LinkedList<Integer>和任何其他泛型类符合List接口?我找不到这事,除了简短提的ArrayList 这里,在API说明部分。

  2. 什么左边面板是什么意思?显然是通用的返回类型(在我的代码在这里)。我认为是该方法的泛型类型参数,但他们是如何规定的?我看着收藏家接口doc和无法吸收它。在这里输入图像描述 Stream.collect()RArrayList<Integer><R, A>

洛尼克斯:
  1. 这是一个默认的实现。ArrayList被使用,因为它是最好的大多数使用情况,但如果它不适合你,你总是可以定义自己收集并提供工厂Collection希望:

    Arrays.stream(arr).boxed().collect(toCollection(LinkedList::new));
    
  2. 是的,A并且R此方法的一般参数,R是返回类型,T是输入类型和A是中间型,即出现在收集元件的整个过程(可能不可见和不关心这个功能)。刚开始Collector的javadoc中定义这些类型(它们是整个文档一致):

    笔-输入元件到缩小操作的类型
    A -归约运算(通常是隐藏作为一个实现细节)的可变累积型
    的R -归约运算的结果类型

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章