2024. 3. 31. 12:23ㆍLanguages/JAVA

📝 Modern Java in Action(강력 추천!!)을 통해 Java를 공부하고 있습니다. 틀리거나 다른 부분이 있을 수 있습니다.
책에 있는 내용을 공부하고, 입력된 숫자 중에서 홀수를 추출해보려고 합니다.
함수형 인터페이스
함수형 인터페이스는 하나의 추상 메서드를 지정하는 인터페이스라고 합니다. 함수형 인터페이스를 이야기하는 이유는, 람다는 함수형 인퍼페이스라는 문맥에서 사용할 수 있기 때문입니다.
람다란?
그렇다면 람다란 무엇일까요? 람다는 파라미터를 받아, 표현식(expression)이나 구문(statement)를 반환하는 역할을 하고 있습니다. 아래는 책에서 람다를 설명하는 부분입니다.
람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다.
람다를 사용하는 이유는, 메서드를 파라미터로 받을 수 있다는 점과 코드를 간결하게 구현하여 값을 전달할 수 있기 때문입니다.
숫자중에 홀수를 알고 싶어
람다를 활용해서, 다양하게 입력된 숫자 중 홀수가 어떤 것들이 있는지 알고 싶었습니다.
1. 함수형 인터페이스와 test를 할 수 있는 Predicate<T>를 만들어보자!
@FunctionalInterface
public interface Predicate<T>{
boolean test(T t);
}
public <T> List<T> filter(List<T> numList, Predicate<T> pre){
List<T> nums = new ArrayList<>();
for(T num : numList){
if(pre.test(num)){
nums.add(num);
}
}
return nums;
}
@FunctionalInterface를 통해 함수형 인터페이스를 만들어주려고 합니다.
2. 숫자들을 numList에 추가하여, 홀수를 추출할 수 있는 코드를 만들어보자
public static void main(String[] args) {
Testing test = new Testing();
List<Integer> numList = new ArrayList<>();
numList.add(1);
numList.add(2);
numList.add(3);
numList.add(4);
numList.add(5);
Predicate<Integer> odd = (Integer i) -> i % 2 != 0;
List<Integer> oddNumList = test.filter(numList, odd);
System.out.println("oddNumber? : " + oddNumList);
}
참고로 class는 Testing입니다. numList에 1,2,3,4,5를 추가하였습니다. 이후 2로 나눈 나머지가 2가 아닌 Predicate를 만들어줬습니다. numList와 Predicate를 이용하여, filter를 통해 홀수가 나오는지 확인하였습니다.

홀수인 1,3,5가 나오는 것을 확인할 수 있었습니다.
References
1. Modern in Java Action [모던 자바 인 액션] - 라울-게이브리얼 우르마, 마리오 푸스코, 앨런 마이크로프트 지음, 우정은 옮김, 한빛미디어
'Languages > JAVA' 카테고리의 다른 글
| [JAVA] Optional (2) | 2024.09.08 |
|---|---|
| [JAVA] max() (0) | 2024.04.04 |
| [JAVA] Stream (0) | 2024.01.24 |
| [JAVA] 입출력 스트림 (0) | 2023.05.30 |
| [JAVA] 인터페이스, 컬렉션 프레임워크, 스레드 (0) | 2023.05.26 |