구글에서 제공하는 라이브러리인 구아바(Guava)를 사용하면 java의 Collection을 간편하게 활용할 수 있다.
이번 글에서 설명할 것은 리스트의 값을 특정 조건으로 필터링 하는 예제이다.
1. List에서 null값 모두 제거하기
List<User> users = Lists.newArrayList(Iterables.filter(users, Predicates.notNull()));
여러 메소드가 있으니 맨 안쪽부터 뜯어서 보자.
1-1
Iterables.filter(users, Predicates.notNull())
구글에서 제공하는 Iterables의 filter 메소드의 파라미터는 unfiltered, predicate 라고 나와있다.
Iterables.filter(필터링할 리스트, 필터 조건)
역시 또 구글에서 제공하는 Predicates 클래스의 notNull메소드를 넣어주면,
리스트에서 null을 제거해준다.
1-2
List<User> users = Lists.newArrayList(필터링 된 결과);
리스트를 생성해주는 구글의 유틸클래스인 Lists를 이용해
1-1에서 나온 필터링 된 결과를 리스트에 assign 해준다.
2. List에서 특정 조건인 값 필터링 하기
null 같이 간단한 조건 체크 말고, 객체의 값이 어떤 조건을 갖고 있는 경우를 필터링 하고 싶을 경우.
아래와 같이 Predicate의 apply메소드를 override를 하여 사용할 수 있다.
List<User> goldUsers = Lists.newArrayList(Iterables.filter(users, new Predicate<User>() {
@Override
public boolean apply(User user) {
return user.getLevel().equals("gold");
}
}));
첨에 딱 보면 복잡해보이지만 하나하나 뜯어보면 복잡하진 않다.
위에 설명한 1-1과 동일한 메소드이며,
두번째 파라미터인 Predicate 객체의 apply 메소드만 오버라이드 해주는 것이다.
위의 예제에서는 goldUsers에 gold 레벨을 갖고있는 유저리스트가 저장 되도록 했다.
'개발 > JAVA' 카테고리의 다른 글
Java의 Integer, int 숫자 비교의 주의사항 (3) | 2016.03.30 |
---|---|
구아바(Guava)를 이용하여 List의 특정값 추출해서 새로운 List 만들기 (0) | 2016.03.25 |
server to server에서 DATE 전송. jsp에서 포멧에 맞춰 출력하기. (0) | 2014.10.15 |
[jUnit] class not found 에러 (0) | 2014.05.15 |
Hash Set - Custom class 중복 제거하기 (0) | 2014.02.16 |