3

Collection<String>lambdaj と String.matches メソッドを使用してフィルター処理する方法。
与えられた例はこれよりも複雑であるため、私はラムダジに慣れておらず、ばかげていると感じています。

4

3 に答える 3

2

コンストラクトを使用して実行できる場合having(on(...))、呼び出しは次のようになります。

select(collection, having( on(String.class).matches("f*") ))

しかし残念ながら、Stringクラスは最終的なものであり、マッチャーon(String.class)が必要とするプロキシを作成できないため、それは不可能です。having

hamcrest はregex matcherを提供しませんが、独自のものを作成する必要はありません。ネットはいくつかの実装を提供しています。ソースコードをコピーする代わりに、依存関係として簡単に含めることができる、すぐに使用できるパブリックライブラリでそのようなマッチャーを見たいと思います。

于 2012-04-06T15:13:59.720 に答える
1

コレクションをフィルタリングする場合は、以下で説明するように実行できます。

@Test
public void test() {
    Collection<String> collection =  new ArrayList<String>();
    collection.add("foo");
    collection.add("bar");
    collection.add("foo");

    List<String> filtered = select(collection, having(on(String.class), equalTo("foo")));
    assertEquals(2, filtered.size());
}
于 2012-04-06T14:01:30.720 に答える