Collectors.toList()はどのようなList<E>を返すのですか?
2023-08-18 06:36:21
質問
私が読んでいるのは ラムダの現状。ライブラリ編 を読んでいて、ある記述に驚いています。
セクションの下にある ストリーム の下に、以下のようにあります。
List<Shape> blue = shapes.stream()
.filter(s -> s.getColor() == BLUE)
.collect(Collectors.toList());
このドキュメントには、どのような
shapes
が実際に何であるかは書かれておらず、それが重要であるかどうかさえわかりません。
私が困惑するのは、次のようなことです。どのような具体的な
List
を返すのでしょうか?
-
これは、変数を
List<Shape>
に割り当てていますが、これは全く問題ありません。 -
stream()
またfilter()
はどのようなリストを使うかを決めます。 -
Collectors.toList()
の具体的な型はどちらも指定しない。List
.
では、何
具体的
の型(サブクラス)は
List
はここで使われているのでしょうか?保証はあるのでしょうか?
どのように解決するのですか?
<ブロッククオートでは、ここで使われているListの具象型(サブクラス)は何でしょうか?保証はあるのでしょうか?
のドキュメントを見ると
Collectors#toList()
のドキュメントを見ると、次のように書かれています。
"返されるリストの型、ミュータビリティ、シリアライザビリティ、スレッドセーフは保証されません。
. もし、特定の実装を返したい場合は
Collectors#toCollection(Supplier)
を使うことができます。
Supplier<List<Shape>> supplier = () -> new LinkedList<Shape>();
List<Shape> blue = shapes.stream()
.filter(s -> s.getColor() == BLUE)
.collect(Collectors.toCollection(supplier));
そして、このラムダからは
List<Shape>
.
更新 :
あるいは、メソッド参照を使うこともできます。
List<Shape> blue = shapes.stream()
.filter(s -> s.getColor() == BLUE)
.collect(Collectors.toCollection(LinkedList::new));
関連
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] リストの要素数を取得する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipse問題 アクセス制限。タイプ 'SunJCE' が API でないことを解決し、/jdk ディレクトリにある /jre と jre の違いについて理解を深める。
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
Solve モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory エラー
-
Java Notes 005_この行に複数のマーカーがある - キーを変数に解決できない - シンタックスエラー、ins
-
java マイクロソフト払い戻し予期せぬサーバーからのファイルの終了
-
java.sql.SQLException: 結果セットの開始前
-
Java appears タイプEを囲むインスタンスがアクセスできない。
-
API の戻り値を処理するために ResponseEntity を使用する
-
JDK8 の Optional.of と Optional.ofNullable メソッドの違いと使い方を説明する。
-
[解決済み] 配列からミュータブルリストを作る?