私はint配列をListに変換しようとしていましたが、Java 8 Streamを使用するというなじみのないルートを取り、これを思いつきました
Arrays.stream(arr).boxed().collect(Collectors.toList());
私はまだこの行を完全に理解するのにまだ苦労しています、ほとんどの場合、
Collectors.toList()
この場合、なぜArrayList<Integer>
実装List
インターフェースが返されるのですか?なぜ、LinkedList<Integer>
またはList
インターフェイスに準拠していない他の総称クラスですか?ここでは、APIリストのセクションでArrayListについて簡単に説明している以外は何も見つかりません。左のパネルは どういう意味ですか?明らかに、一般的な戻り値の型です(このコードでは)。そして、私はメソッドのジェネリック型引数だと思いますが、それらはどのように指定されていますか?Collectorインターフェースのドキュメントを調べましたが、吸収できませんでした。
Stream.collect()
R
ArrayList<Integer>
<R, A>
toList()
返さない-はを返し、最終的にaを作成して返します-また、ドキュメントには次のように記載されています。返されたリストをさらに制御する必要がある場合は、toCollection(Supplier) ....を使用してください。 "ArrayList
List
Collector
List
R
は、結果の型のジェネリック型です。A
コレクターの中間累積型のジェネリック型。これは、コレクターがどのように動作するかの詳細な実装です。並列処理の場合も、分割して征服し、最初に中間タイプに収集します。