Notice
Recent Posts
Recent Comments
Link
SeouliteLab
[Java/자바] Java 8 Predicate를 이해하고 활용하기 본문
Java 8에서 소개된 Predicate는 함수형 프로그래밍을 지원하는 인터페이스 중 하나입니다. 이 인터페이스는 주어진 조건에 따라 true 또는 false를 반환합니다. 이를 통해 코드를 더 간결하고 유연하게 작성할 수 있습니다.
1. Predicate 인터페이스 소개
Predicate는 java.util.function 패키지에 포함되어 있으며, 다음과 같이 선언됩니다:
import java.util.function.Predicate;
Predicate는 하나의 입력 매개변수를 받아 해당 매개변수에 대한 조건을 검사하는 test 메서드를 제공합니다.
2. Predicate 예제
예제 1: 숫자가 양수인지 확인하기
import java.util.function.Predicate;
public class PositiveNumberCheck {
public static void main(String[] args) {
Predicate<Integer> isPositive = num -> num > 0;
System.out.println(isPositive.test(5)); // true 출력
System.out.println(isPositive.test(-2)); // false 출력
}
}
예제 2: 문자열이 특정 길이보다 긴지 확인하기
import java.util.function.Predicate;
public class StringLengthCheck {
public static void main(String[] args) {
Predicate<String> isLongerThan5 = str -> str.length() > 5;
System.out.println(isLongerThan5.test("Java")); // false 출력
System.out.println(isLongerThan5.test("Java 8")); // true 출력
}
}
예제 3: 리스트에서 홀수만 필터링하기
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
public class OddNumberFilter {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Predicate<Integer> isOdd = num -> num % 2 != 0;
List<Integer> oddNumbers = numbers.stream().filter(isOdd).collect(Collectors.toList());
System.out.println(oddNumbers); // [1, 3, 5, 7, 9] 출력
}
}
예제 4: null이 아닌 문자열 필터링하기
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
public class NonNullStringFilter {
public static void main(String[] args) {
List<String> strings = Arrays.asList("Java", null, "Python", null, "C++");
Predicate<String> isNotNull = str -> str != null;
List<String> nonNullStrings = strings.stream().filter(isNotNull).collect(Collectors.toList());
System.out.println(nonNullStrings); // [Java, Python, C++] 출력
}
}
예제 5: 두 조건을 조합하여 필터링하기
import java.util.function.Predicate;
public class CombinationPredicate {
public static void main(String[] args) {
Predicate<Integer> isGreaterThan10 = num -> num > 10;
Predicate<Integer> isEven = num -> num % 2 == 0;
Predicate<Integer> isGreaterThan10AndEven = isGreaterThan10.and(isEven);
System.out.println(isGreaterThan10AndEven.test(12)); // true 출력
System.out.println(isGreaterThan10AndEven.test(7)); // false 출력
}
}
예제 6: 파일 필터링하기
import java.io.File;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
public class FileFilter {
public static void main(String[] args) {
File directory = new File("path/to/directory");
File[] files = directory.listFiles();
Predicate<File> isFile = file -> file.isFile();
List<File> fileList = Arrays.stream(files).filter(isFile).collect(Collectors.toList());
System.out.println(fileList); // 디렉토리에 있는 파일 목록 출력
}
}
'프로그래밍' 카테고리의 다른 글
[Java/자바] Predicate.isEqual() 메서드: 동등성 검사 (0) | 2024.03.13 |
---|---|
[Java/자바] Predicate.negate() 메서드 이해하기 (0) | 2024.03.13 |
[Java/자바] UnaryOperator와 andThen() 메서드 활용 예제 (0) | 2024.03.13 |
[Java/자바] UnaryOperator 인터페이스: 함수형 프로그래밍에서의 활용 (0) | 2024.03.13 |
[Java/자바] BiPredicate의 negate() 메소드 활용 예제 (0) | 2024.03.13 |