[解決済み] Java 8 で java.util.stream.Stream からリストを取得する
2022-03-22 15:42:50
質問
私は、コレクションを簡単にフィルタリングするためにJava 8のラムダを使いまわしていました。しかし、私は同じ文の中で新しいリストとして結果を取得する簡潔な方法を見つけられませんでした。以下は、これまでのところ、私の最も簡潔なアプローチです。
List<Long> sourceLongList = Arrays.asList(1L, 10L, 50L, 80L, 100L, 120L, 133L, 333L);
List<Long> targetLongList = new ArrayList<>();
sourceLongList.stream().filter(l -> l > 100).forEach(targetLongList::add);
ネット上の例では、新しい結果リストを生成することなく停止してしまうので、私の質問には答えてくれませんでした。もっと簡潔な方法があるはずです。私が期待したのは
Stream
クラスには
toList()
,
toSet()
, ...
変数
targetLongList
は、3行目で直接代入できるのでしょうか?
どのように解決するのですか?
あなたのやっていることは、ストリームがシーケンシャルである限り、最もシンプルな方法でしょう。
forEach
.
[後日談: sequential()の呼び出しが必要な理由は、そのままのコード(
forEach(targetLongList::add)
) ストリームが並列であれば、キビキビとした動きになります。その場合でも、意図した効果は得られません。
forEach
は明示的に非決定的であり、シーケンシャルストリームであっても要素の処理順序は保証されない。そのため
forEachOrdered
を使用することで、正しい順序を確保することができます。Stream API の設計者の意図は、以下のように、このような状況でコレクターを使うことです] 。
別の方法として
targetLongList = sourceLongList.stream()
.filter(l -> l > 100)
.collect(Collectors.toList());
関連
-
Java のエラーです。未解決のコンパイル問題 解決方法
-
エラーが報告されました。リソースの読み込みに失敗しました:サーバーは500(内部サーバーエラー)のステータスで応答しました。
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] Java 8 List<V> を Map<K, V> に変換する。
-
[解決済み】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.util.NoSuchElementException 原因解析と解決方法
-
Java Error スレッド "AWT-EventQueue-0" で例外発生 java.lang.
-
スタイルが読み込まれず、ブラウザのコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
jd-gui Java Exceptionが発生しました。
-
JDKの設定時にjava.dllが見つからない、java SE Runtime Environmentが見つからない問題が発生しました。
-
node js npm gruntインストール、elasticsearch-head 5.Xインストール
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
Java(1)仕上げの基本概念+eclipseのインストール構成
-
ブラウザでの大容量ファイルスライスアップロード(Javaサーバサイド実装)
-
[解決済み] Java 8 の IntStream をリストに変換するにはどうすればよいですか?