Notice
Recent Posts
Recent Comments
Link
SeouliteLab
[Java/자바] 다수의 Consumer 연산을 andThen()으로 처리하는 방법 본문
Java의 Consumer 인터페이스에서 제공하는 andThen() 메서드는 두 개의 Consumer를 연속적으로 실행할 수 있게 합니다. 여러 Consumer 연산을 순차적으로 처리하는 예제를 살펴보겠습니다.
예제 1: 문자열을 대문자로 변환한 후 출력하기
Consumer toUpperCase = str -> System.out.println("UpperCase: " + str.toUpperCase());
Consumer printLength = str -> System.out.println("Length: " + str.length());
Consumer combinedConsumer = toUpperCase.andThen(printLength);
combinedConsumer.accept("hello");
이 예제에서는 문자열을 대문자로 변환한 후 그 길이를 출력하는 두 개의 Consumer를 andThen()으로 연결하여 실행했습니다.
예제 2: 숫자를 제곱한 후 제곱근을 구하기
import java.util.function.DoubleConsumer;
import java.lang.Math;
DoubleConsumer square = num -> System.out.println("Square: " + (num * num));
DoubleConsumer squareRoot = num -> System.out.println("Square Root: " + Math.sqrt(num));
DoubleConsumer combinedConsumer = square.andThen(squareRoot);
combinedConsumer.accept(9.0);
이 예제에서는 숫자를 제곱한 후에 그 제곱근을 출력하는 두 개의 Consumer를 andThen()으로 연결하여 실행했습니다.
예제 3: 숫자 리스트의 합계와 평균을 구하기
import java.util.List;
import java.util.function.IntConsumer;
IntConsumer sumConsumer = numbers -> {
int sum = numbers.stream().mapToInt(Integer::intValue).sum();
System.out.println("Sum: " + sum);
};
IntConsumer averageConsumer = numbers -> {
double average = numbers.stream().mapToInt(Integer::intValue).average().orElse(0);
System.out.println("Average: " + average);
};
List<Integer> numbers = List.of(1, 2, 3, 4, 5);
IntConsumer combinedConsumer = sumConsumer.andThen(averageConsumer);
combinedConsumer.accept(numbers);
이 예제에서는 숫자 리스트의 합계와 평균을 구하는 두 개의 Consumer를 andThen()으로 연결하여 실행했습니다.
예제 4: 문자열을 변환한 후 길이와 대문자로 출력하기
Consumer toUpperCase = str -> System.out.println("UpperCase: " + str.toUpperCase());
Consumer printLength = str -> System.out.println("Length: " + str.length());
Consumer printBoth = toUpperCase.andThen(printLength);
printBoth.accept("java");
이 예제에서는 문자열을 대문자로 변환한 후에 그 길이를 출력하는 두 개의 Consumer를 andThen()으로 연결하여 실행했습니다.
예제 5: 소수인지를 판별하고 출력하기
import java.util.function.IntConsumer;
IntConsumer primeChecker = number -> {
boolean isPrime = true;
for (int i = 2; i <= Math.sqrt(number); i++) {
if (number % i == 0) {
isPrime = false;
break;
}
}
if (isPrime)
System.out.println(number + " is a prime number");
else
System.out.println(number + " is not a prime number");
};
IntConsumer printSquare = number -> System.out.println("Square: " + (number * number));
IntConsumer combinedConsumer = primeChecker.andThen(printSquare);
combinedConsumer.accept(17); // 출력 결과: 17 is a prime number, Square: 289
이 예제에서는 소수인지를 판별한 후에 그 제곱을 출력하는 두 개의 Consumer를 andThen()으로 연결하여 실행했습니다.
예제 6: 파일을 삭제하고 결과를 출력하기
import java.io.File;
import java.util.function.Consumer;
Consumer<String> fileDeleter = filePath -> {
File file = new File(filePath);
if (file.delete()) {
System.out.println("File deleted successfully: " + filePath);
} else {
System.out.println("Failed to delete the file: " + filePath);
}
};
Consumer<String> printResult = result -> System.out.println("Deletion result: " + result);
Consumer<String> combinedConsumer = fileDeleter.andThen(printResult);
combinedConsumer.accept("path/to/file.txt");
이 예제에서는 파일을 삭제한 후에 그 결과를 출력하는 두 개의 Consumer를 andThen()으로 연결하여 실행했습니다.
'프로그래밍' 카테고리의 다른 글
[Java/자바] BinaryOperator.maxBy() 메소드 사용 예제 (0) | 2024.03.13 |
---|---|
[Java/자바] BinaryOperator를 활용한 예제 (0) | 2024.03.13 |
[Java/자바] @FunctionalInterface - 함수형 인터페이스 예제와 활용 (0) | 2024.03.13 |
[Java/자바] Consumer 인터페이스 예제와 활용 (0) | 2024.03.13 |
[Java/자바] BiConsumer 인터페이스 예제와 활용 (0) | 2024.03.13 |