java中使用谓词的CollectionUtils
我有一个java中使用谓词的CollectionUtils,java,collections,apache-commons,apache-commons-collection,Java,Collections,Apache Commons,Apache Commons Collection,我有一个列表,我想返回它找到的第一个与谓词匹配的值 我发现我可以使用CollectionUtils.find(collection,predicate)(apachecommons)。假设对象包含一个名为:value的整数变量,如何在谓词中指定值可以是1,2,3,4,5,并丢弃那些不匹配的值。是否可以执行“包含”操作 也没有使用Java8,所以无法做流 您可以使用(我假设您使用的是JDK 8)。您还可以使用流: list = list.stream().filter(predicate).col
列表
,我想返回它找到的第一个与谓词匹配的值
我发现我可以使用CollectionUtils.find(collection,predicate)
(apachecommons)。假设对象
包含一个名为:value
的整数变量,如何在谓词中指定值可以是1,2,3,4,5
,并丢弃那些不匹配的值。是否可以执行“包含”操作
也没有使用Java8,所以无法做流 您可以使用(我假设您使用的是JDK 8)。您还可以使用流:
list = list.stream().filter(predicate).collect(Collectors.toList());
使用ApachCommons集合,您可以使用。在Java8中,您可以编写
Optional<Integer> found = list.stream().filter(i -> i >= 1 && i <= 5).findAny();
Optional found=list.stream().filter(i->i>=1&&i=1&&i返回列表中与给定谓词匹配的第一个元素:
MyObject res = CollectionUtils.find(myList, new Predicate<MyObject>() {
@Override
public boolean evaluate(MyObject o) {
return o.getValue() >= 1 && o.getValue() <= 5;
}
});
CollectionUtils.filter(myList, new Predicate<MyObject>() {
@Override
public boolean evaluate(MyObject o) {
return o.getValue() >= 1 && o.getValue() <= 5;
}
});
MyObject res=CollectionUtils.find(myList,new Predicate()){
@凌驾
公共布尔求值(MyObject o){
return o.getValue()>=1&&o.getValue()=1&&o.getValue(),不幸的是我不是,这就是为什么我选择使用CollectionUtils。我认为操作想要筛选列表(丢弃那些不匹配的您只需找到匹配谓词的第一个对象。值得注意的是,泛型<代码>谓词< /代码>只出现在版本4No中。您是正确的,我正在使用find,因为我想返回它匹配的第一个值。谢谢,谓词是什么?因为我得到的类型谓词不是泛型的;它不能是PAR。使用参数进行参数化。因此您需要将对象
强制转换为其实际类型,即包含值
变量的类型
CollectionUtils.filter(myList, new Predicate<MyObject>() {
@Override
public boolean evaluate(MyObject o) {
return o.getValue() >= 1 && o.getValue() <= 5;
}
});