gpt4 book ai didi

java - 如何理解这个 Java 8 Stream collect() 方法?

转载 作者:行者123 更新时间:2023-12-04 01:53:30 25 4
gpt4 key购买 nike

我试图将一个 int 数组转换为 List 并且我采用了不熟悉的使用 Java 8 Stream 的路线并想出了这个

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

我仍然很难完全理解这条线,主要是,
  • 为什么是 Collectors.toList()在这种情况下返回 ArrayList<Integer>实现 List界面?为什么不LinkedList<Integer>或任何其他符合 List 的泛型类界面?除了简要提及 ArrayList here 之外,我找不到任何关于此的信息。 ,在 API 注释部分。
  • 左边的面板是什么
    enter image description here Stream.collect()是什么意思?显然R是通用返回类型(这里是我的代码中的 ArrayList<Integer>)。我认为 <R, A>是方法的泛型类型参数,但它们是如何指定的?我查看了 Collector interface doc,无法吸收它。
  • 最佳答案

  • 这是一个默认实现。 ArrayList使用,因为它在大多数用例中是最好的,但是如果它不适合您,您可以随时定义自己的收集器并为Collection提供工厂你希望:
    Arrays.stream(arr).boxed().collect(toCollection(LinkedList::new));
  • 是的,AR是此方法的通用参数,R是返回类型,T是输入类型和 A是一个中间类型,出现在收集元素的整个过程中(可能不可见,不关心这个功能)。 The beginning of Collector 's javadoc定义这些类型(它们在整个文档中是一致的):

    T - the type of input elements to the reduction operation
    A - the mutable accumulation type of the reduction operation (often hidden as an implementation detail)
    R - the result type of the reduction operation

  • 关于java - 如何理解这个 Java 8 Stream collect() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58688172/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com