2

ユーザーが入力した一連の条件に一致しないオブジェクトを削除するために、配列リストをフィルタリングしようとしています。オブジェクトには 3 つのリストがあります。たとえば、以下を参照してください。

public class A {
    public String [] a={"a", "b", "c"};
    public String [] c={"a", "b", "c"};
    public String [] d={"a", "b", "c"};
}

このオブジェクトを検索して、検索ダイアログに入力されたデータと一致するかどうかを確認する方法を作成しようとしています。たとえば、配列 a に「a」、配列 b に「c」、配列 c に * を持つすべてのオブジェクトが必要です。

    for(int i = 0; i < products.length; i++)
    {
        reactionData = select(reactionData, having(on(A.class).a,Every.everyItem(containsString(products[i]))));
    }

検索する配列ごとにこのようなことをすることを考えましたが、効率が悪いようです。言うまでもなく、reactionData 配列は検索ごとに置き換えられます。

誰かがこれを解決するのを手伝ってくれたり、理想的なlambdajでhamcrestを利用する方法を説明している便利なサイトを教えてくれたりしたら.

編集

output = filter(having(on(Reaction.class).getChemicalProducts(), hasItems(products)), reactionData);

上記のマッチャーは、製品内のすべてのアイテムと一致する必要があります。商品のどのアイテムにもマッチするものを探しています

4

1 に答える 1

0

products次の行は、リスト内の化学製品の少なくとも 1 つを持つすべてのインスタンスを保持します。

output = filter(having(on(Reaction.class).getChemicalProducts(), hasItem(isIn(products))), reactionData);
于 2013-02-13T20:50:55.113 に答える