Javaストリームは、データの収集を処理するための簡潔で効率的な方法を提供します。 この記事では、ストリームを従来のループと比較して、その長所と短所を強調しています。 ストリームは、データ操作にはfilter()
、map()
、forEach()
、collect()
などの操作をチェーンするパイプラインアーキテクチャを採用しています。 ストリームのライフサイクルは、データソースから始まり、操作のパイプラインを介して進み、端末操作で終了します。
パフォーマンスの比較:
ベンチマークは、特定の操作に応じてパフォーマンスの変動を明らかにします。 特定のシナリオ(以下に示すように)で単純なループがストリームを上回ることがありますが、ストリームは、特に複雑なデータ変換のために、より読みやすく保守可能なコードを提供することがよくあります。
<code>Benchmark Is Here Mode Cnt Score Error Units ForLoopPerformanceTest.usingForEachLoop thrpt 20 259.008 ± 17.888 ops/s ForLoopPerformanceTest.usingIterator thrpt 20 256.016 ± 10.342 ops/s ForLoopPerformanceTest.usingSimpleForLoop thrpt 20 495.308 ± 12.866 ops/s ForLoopPerformanceTest.usingStream thrpt 20 257.174 ± 15.880 ops/s</code>
ストリームとループを比較するには、データ処理に伴う手順を分析することが含まれます。 両方のアプローチは、通常、次の手順に従います:
ストリームは宣言的なスタイルを提供しますが、ループは必須です。 比較は次のとおりです ストリームの例:
ループの例(ループ用に拡張):
List<Person> persons = List.of(...); // Sample Person class with name, age, gender List<String> namesOfAdults = persons.stream() .filter(p -> p.getAge() > 18) .map(Person::getName) .collect(Collectors.toList());
例外処理:
List<Person> persons = List.of(...); List<String> namesOfAdults = new ArrayList<>(); for (Person p : persons) { if (p.getAge() > 18) { namesOfAdults.add(p.getName()); } }
ブロックはリソースを適切にリリースします。
ブロックを備えた例:try-catch-finally
結論:finally
以上がストリームをJavaのループと比較しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。