1. 짝수만 호출하는 일반적인 방법
import java.util.List;
public class FP01Structured {
public static void main(String[] args) {
List<Integer> numbers = List.of(12, 9, 13,4,6,2,4,12,15);
// printAllNumberInListStructured(numbers);
printEvenNumberInListStructured(numbers);
}
private static void printAllNumberInListStructured(List<Integer> numbers) {
// How to loop the numbers?
for(int number : numbers) {
System.out.println(number);
}
}
private static void printEvenNumberInListStructured(List<Integer> numbers) {
// How to loop the numbers?
for(int number : numbers) {
if(number%2 == 0)
System.out.println(number);
}
}
}
2. 함수형 문법을 사용한 방법
public class FP01Functional2 {
public static void main(String[] args) {
List<Integer> numbers = List.of(12,9,13,4,6,2,4,12,15);
// printAllNumberInLisFunctional(numbers);
printEvenNumberInLisFunctional(numbers);
}
private static boolean isEven(int number) {
return number%2 ==0;
}
private static void printAllNumberInLisFunctional(List<Integer> numbers) {
// What to do?
numbers.stream()
.forEach(System.out::println);
// 메서드 참조호출로 클래스명::메서드명 형식으로 사용 가능
}
private static void printEvenNumberInLisFunctional(List<Integer> numbers) {
// What to do?
numbers.stream()
.filter(FP01Functional2::isEven) // 필터 - 짝수만 출력 => 메서드 호출이 아니고 알려주는 것임을 잊으면 안된다. true인것만 실행됨
.forEach(System.out::println);
// 메서드 참조호출로 클래스명::메서드명 형식으로 사용 가능
}
}
3. 함수형 문법에 메서드를 직접 만들어서 사용하는 방법 -> 람다식
import java.util.List;
public class FP01Functional {
public static void main(String[] args) {
List<Integer> numbers = List.of(12,9,13,4,6,2,4,12,15);
// printAllNumberInLisFunctional(numbers);
printEvenNumberInLisFunctional(numbers);
}
// private static void print(int number) {
// System.out.println(number);
// }
// private static boolean isEven(int number) {
// return number%2 ==0;
// }
private static void printAllNumberInLisFunctional(List<Integer> numbers) {
// What to do?
numbers.stream()
.forEach(System.out::println);
// 메서드 참조호출로 클래스명::메서드명 형식으로 사용 가능
}
// number -> number%2 == 0
private static void printEvenNumberInLisFunctional(List<Integer> numbers) {
// What to do?
numbers.stream()
//.filter(FP01Functional2::isEven) // 필터 - 짝수만 출력 => 메서드 호출이 아니고 알려주는 것임을 잊으면 안된다. true인것만 실행됨
.filter(number -> number%2 == 0) // 람다 표현식
.forEach(System.out::println);
// 메서드 참조호출로 클래스명::메서드명 형식으로 사용 가능
}
}
'JAVA' 카테고리의 다른 글
4. 함수형 문법 사용한 예제 2 (0) | 2024.10.01 |
---|---|
3. 함수형 문법을 사용한 예제 (0) | 2024.10.01 |
1. 함수형 자바 문법 Stream() (0) | 2024.10.01 |
스트림 3 (0) | 2023.03.03 |
스트림2 (0) | 2023.02.24 |