0

私はラムダジに慣れようとしていますが、この問題を解決する最善の方法がわかりません。次のテストがあるとします。

@Test
public void test() {
  final List<String> l1 = new ArrayList<>();
  final List<String> l2 = new ArrayList<>();

  l1.add("same");
  l1.add("Upper");
  l1.add("lower");

  l2.add("same");
  l2.add("upper");
  l2.add("lower");
  l2.add("extra");

  final List<String> l3 = Lambda.filter(Matchers.not(Matchers.isIn(l1)), l2);
  Assert.assertThat("There should be one item in l3", l3.size(), Matchers.equalTo(1));
}

マッチャーが大文字と小文字を区別しないようにするにはどうすればよいですか? つまり、大文字と小文字に関係なく、l1 にない l2 のアイテムのリストが必要ですか? 文字列の各リストを同じ大文字と小文字に変換するために別の Lambda を実行する必要はありませんが、代わりに、Matcher を変更して希望どおりに実行する方法が必要です。これは可能ですか、それとも最初にアイテムを同じケースに変換する必要がありますか?

4

2 に答える 2

0

これは私のために働く:

import static org.hamcrest.text.IsEqualIgnoringCase.equalToIgnoringCase;
//..
List<String> allJedis = asList("Luke","Obiwan","Yoda");
List<String> someJedis = filter(equalToIgnoringCase("obiwan"), allJedis);
System.out.println(someJedis);

出力は[Obiwan]

于 2012-06-13T20:02:26.623 に答える