中間リストを作成せずに Java Iterable を効率的にストリームに変換するにはどうすればよいですか?

DDD
リリース: 2024-11-24 01:49:14
オリジナル
114 人が閲覧しました

How Can I Efficiently Convert Java Iterables to Streams Without Creating Intermediate Lists?

Java 8 の反復可能オブジェクトからストリームを取得する

反復可能なデータを扱う場合、プログラマは Java 8 ストリームを利用する必要があるという課題に遭遇することがよくあります。 API。ただし、イテラブルは本質的に「ストリーム」メソッドを提供しません。

問題:

変換のオーバーヘッドを回避しながら、イテラブルとストリームの間のギャップを埋めるにはどうすればよいでしょうか。に反復可能list?

解決策:

Java 8 は、この問題に対する便利な解決策を提供します。 Iterable には Spliterator() メソッドがあり、これにより Spliterator を抽出できます。このスプリッテレータを StreamSupport.stream メソッドに渡してストリームを作成できます。

StreamSupport.stream(iterable.spliterator(), false)
    .filter(...)
    .moreStreamOps(...);
ログイン後にコピー

このアプローチには、spliteratorUnknownSize:

  • を直接使用する場合に比べて、いくつかの利点があります。 より簡潔で簡単です。 read.
  • パフォーマンス: イテラブルがすでにコレクションであるシナリオでは、ストリームがより最適化されたスプリッテレーターを利用できるようになり、パフォーマンスが向上します。

この技術を利用すると、既存の Iterable データをストリームに変換し、Java 8 Stream API のパワーを洗練されたデータに利用することが容易になります。データ操作。

以上が中間リストを作成せずに Java Iterable を効率的にストリームに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート