Java Stream フィルタ

JavaJavaBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

Java Streamsは、効率的かつ簡潔な方法でデータを処理するための手段を提供します。Streamsのfilter()メソッドを使用すると、条件または述語に基づいて、指定されたストリームから要素をフィルタリングできます。この実験では、Javaでfilter()メソッドを使用してストリームから要素をフィルタリングする方法を学びます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java/DataStructuresGroup -.-> java/collections_methods("Collections Methods") java/ProgrammingTechniquesGroup -.-> java/lambda("Lambda") java/FileandIOManagementGroup -.-> java/stream("Stream") subgraph Lab Skills java/collections_methods -.-> lab-117954{{"Java Stream フィルタ"}} java/lambda -.-> lab-117954{{"Java Stream フィルタ"}} java/stream -.-> lab-117954{{"Java Stream フィルタ"}} end

整数のストリームを作成する

整数のストリームを作成し、そこから偶数をフィルタリングしましょう。整数のリストを宣言し、それをストリームに変換し、次にfilter()メソッドを使用して偶数をフィルタリングします。

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamFilter {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        Stream<Integer> stream = numbers.stream();

        Stream<Integer> evenNumbers = stream.filter(i -> i % 2 == 0);

        List<Integer> result = evenNumbers.collect(Collectors.toList());

        System.out.println(result); // 出力: [2, 4, 6, 8, 10]
    }
}

上記のコードでは、整数のリストを宣言し、stream()メソッドを使用してそれをストリームに変換し、次にfilter()メソッドを使用して偶数をフィルタリングしています。

文字列のストリームを作成する

文字列のストリームを作成し、そこから特定の文字を含む文字列をフィルタリングしましょう。文字列をリストとして宣言し、それをストリームに変換し、次にfilter()メソッドを使用して特定の文字を含む文字列をフィルタリングします。

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamFilter {
    public static void main(String[] args) {
        List<String> words = Arrays.asList("hello", "world", "java", "stream", "filter");
        Stream<String> stream = words.stream();

        char letter = 'l';

        Stream<String> filteredWords = stream.filter(s -> s.indexOf(letter)!= -1);

        List<String> result = filteredWords.collect(Collectors.toList());

        System.out.println(result); // 出力: [hello, world, filter]
    }
}

上記のコードでは、文字列をリストとして宣言し、stream()メソッドを使用してそれをストリームに変換し、次にfilter()メソッドを使用して文字'l'を含む文字列をフィルタリングしています。

カスタムオブジェクトのストリームを作成する

条件に基づいてカスタムオブジェクトのストリームを作成し、そのオブジェクトをフィルタリングしましょう。カスタムオブジェクトのリストを宣言し、それをストリームに変換し、次に条件に基づいてfilter()メソッドを使用してオブジェクトをフィルタリングします。

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamFilter {
    public static void main(String[] args) {
        List<Person> people = Arrays.asList(
                new Person("John", 25),
                new Person("Sarah", 30),
                new Person("Mike", 35),
                new Person("Emma", 40)
        );

        Stream<Person> stream = people.stream();

        Stream<Person> filteredPeople = stream.filter(p -> p.getAge() > 30);

        List<Person> result = filteredPeople.collect(Collectors.toList());

        System.out.println(result); // 出力: [Mike{name='Mike', age=35}, Emma{name='Emma', age=40}]
    }
}

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return name + "{name='" + name + '\'' + ", age=" + age + '}';
    }
}

上記のコードでは、Person型のカスタムオブジェクトのリストを宣言し、stream()メソッドを使用してそれをストリームに変換し、次にfilter()メソッドを使用して年齢が30を超えるオブジェクトをフィルタリングしています。

まとめ

この実験では、Java Streamsのfilter()メソッドを使用して、条件または述語に基づいて要素をフィルタリングする方法を学びました。filter()メソッドを使用して、整数、文字列、カスタムオブジェクトのストリームをフィルタリングしました。