この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. 左側のパネルには何の平均は?明らかに、(一般的な戻り値の型であるここに私のコードでは)。そして、私は考える方法のジェネリック型引数ですが、どのように指定されていますか?私は、に見えたコレクタインターフェースドキュメントと、それを吸収することができませんでした。ここでは、画像の説明を入力します。 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は、これらの種類を(彼らは全体のドキュメント全体で一貫している)定義されています。

    T -リダクション演算の入力要素のタイプ
    A - (多くの場合、実装の詳細として隠された)縮小操作の可変蓄積型
    R -リダクション演算の結果の型

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=322900&siteId=1