1. ホーム
  2. java

[解決済み] Javaコレクションをフィルタリングする方法(述語に基づく)?

2022-03-14 16:44:58

質問

をフィルタリングしたいのですが java.util.Collection を述語にしたものです。

どのように解決するのですか?

Java 8 ( 2014 ) は、ストリームとラムダを使ってこの問題を1行のコードで解決しています。

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

ここでは チュートリアル .

使用方法 Collection#removeIf を使用すると、その場でコレクションを変更できます。(注意 この場合、述語は述語を満たすオブジェクトを削除することになる)。

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


ラムダージ ループやインナークラスを書かずにコレクションをフィルタリングすることができます。

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

もっと読みやすいものを想像できますか?

免責事項です。 私はlambdajのコントリビューターです。