Lambdajを使用して、2つの別々の基準を満たすオブジェクトをリストから分離しようとしています。次の両方が私の目標を達成します。A)
List<SomeObject> someObjectsWithMatchingSomeObjectIds = select(foo.getSomeParentObject().getSomeObjects(), having(on(
SomeObject.class).getId(), equalTo(123)));
SomeObject someObject = selectFirst(someObjectsWithMatchingSomeObjectIds, having(on(SomeObject.class).getLoanTerm(),
notNullValue()));
B)
SomeObject someObject = selectFirst(select(foo.getSomeParentObject().getSomeObjects(), having(on(SomeObject.class)
.getId(), equalTo(123))), having(on(SomeObject.class).getLoanTerm(), notNullValue()));
最初のものは、特にAPIに精通していない人にとっては読みやすいようです。2つ目は、lambdajの関数型プログラミングの側面を利用しているようです。
読みやすさが勝つと思います。ただし、LambdaJを使用してコレクションをフィルタリングするときに、2つの別々の条件を処理するためのより簡潔な方法はありますか?