List에서 filter를 제공해주기 때문에 굳이 이 방법을 사용할 필요는 없지만 이렇게 사용하는 방법도 있다는 걸 기억해두려고 작성하는 글 !
먼저 사과 리스트를 만들어 보자.
List inventory = Arrays.asList(
new Apple(80, "green"),
new Apple(155, "green"),
new Apple(120, "red"),
new Apple(30, "blue"),
new Apple(300, "red"),
new Apple(200, "blue"),
new Apple(150, "red"),
new Apple(222, "green"),
new Apple(130, "red")
);
사과 리스트가 생성이 됐다.
이제 사과를 원하는 사과만 골라줄 필터역할을 담당할 함수를 만들어보자
public static List filterApples(List inventory, Predicate p) {
List result = new ArrayList<>();
for (Apple apple : inventory) {
if (p.test(apple)) { //Predicate는 test를 하면 true / false 를 리턴한다.
result.add(apple);
}
}
return result;
}
이제 이 함수를 사용해서 초록색 사과만 가져와보자
List greenApple = filterApples(inventory, (Apple a) ->"green".equals(a.getColor()));
System.out.println("_"+greenApple);
초록색 사과만 가져오는 것을 확인할 수 있다. 조건만 변경하면 원하는 것을 가져올 수 있겠지