자바 컬렉션을 필터링하는 가장 최선의 방법은 무엇인가요?


구현할 때 java.util.Collection을 필터링하고 싶습니다.

  • 2016년 05월 20일에 작성됨

조회수 89


1 답변


좋아요
0
싫어요
채택취소하기

lambdaj는 반복문 또는 이너 클래스 없이 다음과 같이 컬렉션들을 필터링하는 방법을 지원합니다:

List<Person> beerDrinkers = select(persons, having(on(Person.class).getAge(),
    greaterThan(16)));

다음을 참고하세요:

https://code.google.com/archive/p/lambdaj/

Update:

스트림과 람다식을 도입한 자바 8 (2014)를 가지고 위의 문제를 단 한줄로도 해결할 수 있습니다:

List<Person> beerDrinkers = persons.stream()
    .filter(p -> p.getAge() > 16).collect(Collectors.toList());

튜토리얼도 참고해보세요.

만약 즉시 컬렉션의 데이터를 수정하기를 원지 않는다면, Collection#removeIf를 사용할 수도 있습니다:

persons.removeIf(p -> p.getAge() > 16);
  • 2016년 05월 21일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close