Java の Stream 関数は、Java 8 で導入された新機能です。これは、コレクションや配列などのデータ セットを処理する新しい方法を提供します。 Stream は、ストリーム操作を実行するための関数型プログラミング手法を提供し、コードの記述を大幅に簡素化します。この記事では、Java の Stream 関数を使用してストリーミング操作を実行する方法を説明します。
1. Stream 関数とは
Stream 関数は、Java 8 で導入された新機能です。これは、コードを簡素化するためにストリーム操作を実行する関数型プログラミングの方法を提供します。 Stream 関数を使用すると、コレクションや配列などのデータ構造内の要素を操作して、必要な機能を実現できます。
Stream 関数には、中間動作と終了動作の 2 つの動作モードがあります。中間操作は複数回実行できますが、終了操作はストリームの処理を停止し、結果または副作用を返します。同時に、Stream には並列処理の機能もあります。
2. ストリーム操作には Stream 関数を使用します
コレクションまたはストリームの 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对象
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
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]
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
以上がJava で Stream 関数を使用してストリーム操作を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。