Saturday, 1 October 2016

What is the best way to filter a Java Collection?



I want to filter a java.util.Collection based on a predicate.



Answer



Java 8 (2014) solves this problem using streams and lambdas in one line of code:



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


Here's a tutorial.



Use Collection#removeIf to modify the collection in place. (Notice: In this case, the predicate will remove objects who satisfy the predicate):




persons.removeIf(p -> p.getAge() <= 16);





lambdaj allows filtering collections without writing loops or inner classes:



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



Can you imagine something more readable?



Disclaimer: I am a contributor on lambdaj


No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...