Ish*_*rav 9 java predicate java-8 functional-interface
我有一个String
"ishant"和一个Set<String>
["Ishant","Gaurav","sdnj"].我需要为此编写谓词.我尝试过如下代码,但它无法正常工作
Predicate<Set<String>,String> checkIfCurrencyPresent = (currencyList,currency) -> currencyList.contains(currency);
Run Code Online (Sandbox Code Playgroud)
如何创建一个Predicate
将采取Set<String>
与String
作为参数,并可以给结果呢?
一Predicate<T>
,您目前正在使用代表一个谓语(布尔值函数)一个说法.
你正在寻找一个BiPredicate<T,U>
本质上代表两个参数的谓词(布尔值函数).
BiPredicate<Set<String>,String> checkIfCurrencyPresent = (set,currency) -> set.contains(currency);
Run Code Online (Sandbox Code Playgroud)
或方法参考:
BiPredicate<Set<String>,String> checkIfCurrencyPresent = Set::contains;
Run Code Online (Sandbox Code Playgroud)
如果你坚持使用Predicate
,请使用类似的东西:
Set<String> currencies = Set.of("Ishant", "Gaurav", "sdnj");
String input = "ishant";
Predicate<String> predicate = currencies::contains;
System.out.print(predicate.test(input)); // prints false
Run Code Online (Sandbox Code Playgroud)
BiPredicate
和之间的主要区别在于Predicate
它们的test
方法实现.A Predicate
会使用
public boolean test(String o) {
return currencies.contains(o);
}
Run Code Online (Sandbox Code Playgroud)
而a BiPredicate
会改为使用
public boolean test(Set<String> set, String currency) {
return set.contains(currency);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
209 次 |
最近记录: |