Java Streamのフィルターチェーンに複数の条件を追加する方法


  1. 単一のフィルター式を使用する方法:

    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
    
    List<Integer> filteredNumbers = numbers.stream()
       .filter(n -> n > 2 && n < 5) // 複数の条件を組み合わせる
       .collect(Collectors.toList());
    
    System.out.println(filteredNumbers); // 出力: [3, 4]
  2. 複数のフィルターメソッドを使用する方法:

    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
    
    List<Integer> filteredNumbers = numbers.stream()
       .filter(n -> n > 2)
       .filter(n -> n < 5) // 別々のフィルターメソッドを使用する
       .collect(Collectors.toList());
    
    System.out.println(filteredNumbers); // 出力: [3, 4]
  3. Predicateを使用する方法:

    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
    
    Predicate<Integer> greaterThan2 = n -> n > 2;
    Predicate<Integer> lessThan5 = n -> n < 5;
    
    List<Integer> filteredNumbers = numbers.stream()
       .filter(greaterThan2.and(lessThan5)) // Predicateを使用して条件を組み合わせる
       .collect(Collectors.toList());
    
    System.out.println(filteredNumbers); // 出力: [3, 4]

これらの例では、filterメソッドを使用して要素をフィルタリングし、条件を組み合わせています。複数の条件を組み合わせるために、論理演算子(&&など)を使用するか、複数のfilterメソッドをチェーンするか、Predicateを使用して条件を組み合わせることができます。