[解決済み] Java 8 - リストを変換する最良の方法:マップまたはforeach?
2022-04-05 04:48:07
質問
リストがあります
myListToParse
ここで、要素をフィルタリングして各要素にメソッドを適用し、その結果を別のリストに追加したいのです。
myFinalList
.
Java 8では、2つの異なる方法でそれを行うことができることに気づきました。私はそれらの間でより効率的な方法を知り、1つの方法が他の方法よりも優れている理由を理解したいと思います。
第3の方法について、何か提案があれば教えてください。
方法1:
myFinalList = new ArrayList<>();
myListToParse.stream()
.filter(elt -> elt != null)
.forEach(elt -> myFinalList.add(doSomething(elt)));
方法2:
myFinalList = myListToParse.stream()
.filter(elt -> elt != null)
.map(elt -> doSomething(elt))
.collect(Collectors.toList());
解決方法は?
この場合、パフォーマンスの差はほとんどありません。
方法2が望ましい理由は
-
ラムダ式の外側に存在するコレクションを変更する必要がない。
-
コレクションパイプラインで実行されるさまざまなステップが、最初にフィルター操作、次にマップ操作、そして結果を収集するというように順次記述されているため、より読みやすくなっています(コレクションパイプラインの利点については、Martin Fowler の 秀逸な記事 .)
-
を置き換えることで、値を収集する方法を簡単に変更することができます。
Collector
が使用されます。 場合によっては、独自のCollector
しかし、その場合、簡単に再利用できるという利点があります。
関連
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Java の配列を表示する最も簡単な方法は何ですか?
-
[解決済み] Javaで配列をリストに変換する
-
[解決済み] Java 8 List<V> を Map<K, V> に変換する。
-
[解決済み] Java 8のmap()メソッドとflatMap()メソッドの違いは何ですか?
-
[解決済み] Java 8でリストのリストをリストにするにはどうしたらいいですか?
-
[解決済み] Javaでリストを反復処理する方法
-
[解決済み] Java 8 Iterable.forEach() vs foreachループ
-
[解決済み] Java 8でインデックスを持つストリームを反復処理する簡潔な方法はありますか?
-
[解決済み] javaストリームで整数のリストを合計する方法は?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Javaで拡張子なしのファイル名を取得する方法は?
-
[解決済み] Firebase クラスにシリアライズするプロパティが見つからない
-
[解決済み] enumのordinalを使用するのは良い習慣ですか?
-
[解決済み] java.lang.IncompatibleClassChangeError: Mongo クラスを実装しています。
-
[解決済み] javacが「using unchecked or unsafe operations」という警告を出す原因は何ですか?
-
[解決済み] Java の条件付きコンパイル:コードチャンクをコンパイルしないようにするには?
-
[解決済み] アニメーションGIFの表示
-
[解決済み] Spring ApplicationContext - リソースリーク: 'context' が閉じられない
-
[解決済み] java.io.IOException。DER長の短い読み取り
-
[解決済み] .lengthが解決できない、またはフィールドでない