아래와 같은 함수를 만들고자 할때 "i%2" 와 같이 조건문만 변경되는데 함수가 2개나 나와야한다 (중복 코드많아짐)
// 짝수만 골라내는 함수
public static List<Integer> evenList(List<Integer> input) {
ArrayList<Integer> result = new ArrayList<>();
for(int i : input) {
if(i %2 == 0)
result.add(i);
}
return result;
}
// 홀수만 골라내는 함수
public static List<Integer> oddList(List<Integer> input) {
ArrayList<Integer> result = new ArrayList<>();
for(int i : input) {
if(i %2 == 1)
result.add(i);
}
return result;
}
저 조건문만 변경하면 될때 Predicate를 써주면 하나로 통일 가능!
public static List<Integer> filter(List<Integer> input, Predicate<Integer> predicate) {
ArrayList<Integer> result = new ArrayList<>();
for(int i : input) {
if(predicate.test(i))
result.add(i);
}
return result;
}
Main함수에서 쓰일때
public static void main(String[] arg) {
ArrayList<Integer> input = new ArrayList<>();
input.add(3);
input.add(2);
List<Integer> evenList = evenList(input);
System.out.println(evenList);
List<Integer> evenList2 = filter(input, (num) -> num % 2 == 0);
System.out.println(evenList2);
}
(참고) 통소스
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
public class Main {
public static List<Integer> evenList(List<Integer> input) {
ArrayList<Integer> result = new ArrayList<>();
for(int i : input) {
if(i %2 == 0)
result.add(i);
}
return result;
}
public static List<Integer> oddList(List<Integer> input) {
ArrayList<Integer> result = new ArrayList<>();
for(int i : input) {
if(i %2 == 1)
result.add(i);
}
return result;
}
public static List<Integer> filter(List<Integer> input, Predicate<Integer> predicate) {
ArrayList<Integer> result = new ArrayList<>();
for(int i : input) {
if(predicate.test(i))
result.add(i);
}
return result;
}
public static void main(String[] arg) {
ArrayList<Integer> input = new ArrayList<>();
input.add(3);
input.add(2);
List<Integer> evenList = evenList(input);
System.out.println(evenList);
List<Integer> evenList2 = filter(input, (num) -> num % 2 == 0);
System.out.println(evenList2);
}
}
'Back-End > java' 카테고리의 다른 글
hibernate-envers사용에 Duplicate entry '81981' for key 'PRIMARY' 오류 확인 (0) | 2023.02.21 |
---|---|
MAC에서 JAVA환경변수 변경하기 (Java버전변경) (0) | 2021.05.22 |
Java 이전 버전 다운 URL (0) | 2021.05.22 |
HttpServletResponse.getHeader 메소드 없다면 서블릿 버전 확인 (1) | 2021.02.12 |
댓글