ホームページ  >  記事  >  Java  >  Java で Stream 関数を使用してストリーム操作を行う方法

Java で Stream 関数を使用してストリーム操作を行う方法

PHPz
PHPzオリジナル
2023-06-26 14:10:111397ブラウズ

Java の Stream 関数は、Java 8 で導入された新機能です。これは、コレクションや配列などのデータ セットを処理する新しい方法を提供します。 Stream は、ストリーム操作を実行するための関数型プログラミング手法を提供し、コードの記述を大幅に簡素化します。この記事では、Java の Stream 関数を使用してストリーミング操作を実行する方法を説明します。

1. Stream 関数とは

Stream 関数は、Java 8 で導入された新機能です。これは、コードを簡素化するためにストリーム操作を実行する関数型プログラミングの方法を提供します。 Stream 関数を使用すると、コレクションや配列などのデータ構造内の要素を操作して、必要な機能を実現できます。

Stream 関数には、中間動作と終了動作の 2 つの動作モードがあります。中間操作は複数回実行できますが、終了操作はストリームの処理を停止し、結果または副作用を返します。同時に、Stream には並列処理の機能もあります。

2. ストリーム操作には Stream 関数を使用します

  1. ストリームの作成

コレクションまたはストリームの stream() メソッドを使用できます。 .of( of the array ) メソッドを使用してストリーム オブジェクトを取得します。例:

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream1 = list.stream(); // 通过list对象获取stream对象
Stream<Integer> stream2 = Stream.of(1, 2, 3); // 通过Stream.of()方法获取stream对象
  1. 中間操作

Stream は、フィルタリング、マッピング、スライスなどの操作を実行できる多くの中間操作メソッドを提供します。これらの操作メソッドを 1 つずつ見てみましょう。

(1) filter() メソッド: フィルター要素

List<Integer> list = Arrays.asList(1, 2, 3, 4);
Stream<Integer> stream = list.stream();
stream.filter(i -> i%2 == 0).forEach(System.out::println); // 输出2和4

(2) map() メソッド: マップ要素

List<String> list = Arrays.asList("Java", "Python", "Ruby");
Stream<String> stream = list.stream();
stream.map(String::toLowerCase).forEach(System.out::println); // 输出java, python, ruby

(3) flatMap() メソッド: flatten stream

List<List<Integer>> list = Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3, 4), Arrays.asList(5, 6));
Stream<List<Integer>> stream = list.stream();
stream.flatMap(Collection::stream).forEach(System.out::println); // 输出1, 2, 3, 4, 5, 6

(4) unique() メソッド: deduplication

List<Integer> list = Arrays.asList(1, 2, 3, 1, 2, 3);
Stream<Integer> stream = list.stream();
stream.distinct().forEach(System.out::println); // 输出1, 2, 3

(5)sorted() メソッド: sort

List<Integer> list = Arrays.asList(3, 2, 1);
Stream<Integer> stream = list.stream();
stream.sorted().forEach(System.out::println); // 输出1, 2, 3

(6) limit() メソッド: 要素数を制限する

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
stream.limit(3).forEach(System.out::println); // 输出1, 2, 3

(7) Skip() メソッド: 要素をスキップ

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
stream.skip(2).forEach(System.out::println); // 输出3, 4, 5

(8) Peak() メソッド: 要素を追加

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream1 = list.stream();
Stream<Integer> stream2 = stream1.peek(System.out::println);
stream2.count(); // 输出1, 2, 3
  1. 終了操作

Stream には、ストリーム処理の結果を返すことができる多くの終了操作メソッドが用意されています。これらの操作メソッドを 1 つずつ見てみましょう:

(1) forEach() メソッド: ストリーム内の要素を反復します

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
stream.forEach(System.out::println); // 输出1, 2, 3

(2) count() メソッド: 数をカウントします。要素数

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
stream.count(); // 输出3

(3) toArray() メソッド: ストリーム内の要素を配列に変換します

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
Object[] array = stream.toArray();
System.out.println(Arrays.toString(array)); // 输出[1, 2, 3]

(4)reduce() メソッド: ストリーム内の要素を削減します

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
int result = stream.reduce(0, (x, y) -> x + y);
System.out.println(result); // 输出6

(5)collect() メソッド: ストリーム内の要素を収集

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
List<Integer> newList = stream.collect(Collectors.toList());
System.out.println(newList); // 输出[1, 2, 3]
    ##並列ストリーム操作
Stream 関数は並列ストリーム操作の機能も提供しますこれは、Parallel() メソッドを通じてストリームを並列ストリームに変換できます。並列ストリームはマルチコア CPU の処理能力を最大限に活用し、プログラムの実行効率を向上させます。例:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.parallelStream();
stream.forEach(System.out::println); // 输出1, 2, 3, 4, 5

3. 概要

Stream 関数は Java 8 の新機能で、コレクションや配列などのデータ セットを処理する新しい方法を提供します。 Stream 関数の中間操作と終了操作を通じて、フィルター、マップ、重複排除、並べ替え、要素数の制限、要素のスキップ、要素の追加、その他の操作を簡単に行うことができます。同時にストリームの並列処理により、マルチコアCPUの処理能力を最大限に活用し、プログラムの実行効率を向上させます。上記で紹介したのはStream関数の機能の一部であり、複雑なビジネスロジックはStream関数のさまざまな操作方法を応用して実装する必要があります。

以上がJava で Stream 関数を使用してストリーム操作を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。