私は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()RArrayList<Integer><R, A>
toList()返さない-はを返し、最終的にaを作成して返します-また、ドキュメントには次のように記載されています。返されたリストをさらに制御する必要がある場合は、toCollection(Supplier) ....を使用してください。 "ArrayListListCollectorList
Rは、結果の型のジェネリック型です。Aコレクターの中間累積型のジェネリック型。これは、コレクターがどのように動作するかの詳細な実装です。並列処理の場合も、分割して征服し、最初に中間タイプに収集します。