0Pricing
Java Academy · 강의

Predicate와 조합

불리언 검사를 조합합니다

Predicate와 조합은(는) CoddyKit의 무료 Java Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Java Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

Predicate의 역할

Predicate<T>는 값을 받아 boolean을 반환합니다.

  • 메서드는 boolean test(T t)입니다.
  • 참 또는 거짓 조건을 나타냅니다.
import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<Integer> isEven = n -> n % 2 == 0;
        System.out.println(isEven.test(4));
        System.out.println(isEven.test(5));
    }
}

filter의 Predicate

Stream.filter는 Predicate를 받아 조건에 맞는 요소만 유지합니다.

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

public class Main {
    public static void main(String[] args) {
        List<Integer> nums = List.of(1, 2, 3, 4, 5, 6);
        List<Integer> evens = nums.stream()
            .filter(n -> n % 2 == 0)
            .collect(Collectors.toList());
        System.out.println(evens);
    }
}

and로 결합하기

and는 두 조건자가 모두 통과할 때만 참인 조건자를 만듭니다.

import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<Integer> positive = n -> n > 0;
        Predicate<Integer> even = n -> n % 2 == 0;
        Predicate<Integer> both = positive.and(even);
        System.out.println(both.test(4));
        System.out.println(both.test(-2));
    }
}

or로 결합하기

or는 하나 이상의 조건자가 통과하면 참을 반환합니다.

import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<String> empty = String::isEmpty;
        Predicate<String> shortStr = s -> s.length() < 3;
        Predicate<String> either = empty.or(shortStr);
        System.out.println(either.test(""));
        System.out.println(either.test("hi"));
        System.out.println(either.test("hello"));
    }
}

negate로 부정하기

negate는 조건자의 결과를 뒤집어 논리적 NOT을 제공합니다.

import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<Integer> even = n -> n % 2 == 0;
        Predicate<Integer> odd = even.negate();
        System.out.println(odd.test(3));
    }
}

Predicate.not 정적 도우미

Predicate.not(p)는 조건자를 읽기 쉬운 방식으로 부정하는 정적 방법이며, 특히 메서드 참조와 함께 사용할 때 유용합니다.

import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<String> words = List.of("", "a", "", "bc");
        List<String> nonEmpty = words.stream()
            .filter(Predicate.not(String::isEmpty))
            .collect(Collectors.toList());
        System.out.println(nonEmpty);
    }
}

Predicate.isEqual

Predicate.isEqual(target)은 Objects.equals를 사용하여 고정된 값과 같은지 검사하는 조건자를 만듭니다.

import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<String> isJava = Predicate.isEqual("java");
        System.out.println(isJava.test("java"));
        System.out.println(isJava.test("python"));
    }
}

여러 조건 연결하기

and, or, negate를 연결하여 복잡한 규칙을 표현할 수 있습니다. 괄호를 사용하여 그룹을 제어하십시오.

import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<Integer> big = n -> n > 100;
        Predicate<Integer> even = n -> n % 2 == 0;
        Predicate<Integer> rule = big.and(even).or(n -> n == 0);
        System.out.println(rule.test(0));
        System.out.println(rule.test(102));
        System.out.println(rule.test(101));
    }
}

두 입력을 위한 BiPredicate

BiPredicate<T, U>는 두 인수를 검사하며 and, or, negate도 지원합니다.

import java.util.function.BiPredicate;

public class Main {
    public static void main(String[] args) {
        BiPredicate<String, Integer> hasLength = (s, n) -> s.length() == n;
        System.out.println(hasLength.test("hello", 5));
    }
}

anyMatch의 조건자

anyMatch, allMatch, noneMatch와 같은 Stream 종단 연산은 모두 Predicate를 받습니다.

import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> nums = List.of(1, 3, 5, 8);
        System.out.println(nums.stream().anyMatch(n -> n % 2 == 0));
        System.out.println(nums.stream().allMatch(n -> n > 0));
    }
}

재사용 가능한 조건자 상수

조건자를 이름이 있는 변수로 정의하면 필터링 파이프라인을 자체적으로 설명할 수 있고 재사용하기도 쉽습니다.

import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        Predicate<String> nonBlank = s -> !s.isBlank();
        List<String> input = List.of("a", " ", "", "b");
        System.out.println(input.stream().filter(nonBlank).collect(Collectors.toList()));
    }
}

빠른 확인

p.and(q)는 무엇을 생성합니까?

복습

불리언 조건을 결합했습니다:

  • Predicate<T>는 test를 사용하여 불리언 값을 반환합니다.
  • and, or, negate는 단락 평가 방식으로 조건을 결합합니다.
  • Predicate.not과 Predicate.isEqual은 편리한 정적 도우미입니다.
  • BiPredicate는 두 입력을 검사합니다.

자주 묻는 질문

“Predicate와 조합” 강의는 무료인가요?

네 — “Predicate와 조합” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Java Academy 강의 전체를 잠금 해제할 수 있습니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Predicate와 조합”에서 뭘 배우나요?

불리언 검사를 조합합니다 브라우저에서 직접 실행하는 실습 코드로 Java Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Java Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Java Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“Predicate와 조합” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Java Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Java Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Function과 BiFunction
  2. Supplier와 Consumer
  3. Predicate와 조합
  4. 사용자 정의 함수형 인터페이스
← Java Academy(으)로 돌아가기