草庐IT

java - 如何使用谓词过滤列表

这个问题在这里已经有了答案:HowtofilteraJavaCollection(basedonpredicate)?(29个答案)关闭6年前。privatestaticclassFilterByStringContainsimplementsPredicate{privateStringfilterString;privateFilterByStringContains(finalStringfilterString){this.filterString=filterString;}@Overridepublicbooleanapply(finalStringstring){retu

java - 来自函数引用的谓词( boolean 类型)

我需要使用基于boolean函数的谓词组合流操作。通过将方法的参数作为谓词重新抛出来找到解决方法,如下所示:publicPredicatepred(finalPredicateaLambda){returnaLambda;}publicListfoo(){returnnewArrayList().stream()//ofcourse,thisdoesnothing,simplified.filter(pred(String::isEmpty).negate()).collect(Collectors.toList());}'pred'方法似乎什么都不做,但不是这个:publicList

Java 8 Predicate - 为什么不能连接通配符泛型谓词?

考虑以下代码:publicclassMain{privatestaticPredicatepredicate=testObject->true;privatestaticPredicatepredicate1=testObject->true;publicstaticvoidmain(String[]args){Listobjects=Lists.newArrayList(newTestObject(),newTestObject());objects.stream().filter(predicate.or(predicate1)).findFirst();}}编译不通过,报错:Er

java - 条件、谓词和规范之间有什么区别?

在SpringDataJPA-ReferenceDocumentation,标准定义为:Writingacriteriayouactuallydefinethewhere-clauseofaqueryforadomainclass.规范和谓词似乎具有相同的作用。criteria之间有什么区别?,一个predicate和一个specification? 最佳答案 标准CriteriaAPI是在JPA2.0中添加的。根据JavaPersistencewikibook:TheJavaPersistenceCriteriaAPIisused

java - 使用 Java 谓词和 Lambda

为什么下面的代码返回Predicate而不是boolean?我的理解是!s.isEmpty()检查这里是否违背谓词booleantest(Tt);这里的返回类型是boolean.所以在我的lambda中我应该nonEmptyStringPredicate不是boolean类型?显然,不是,我只是想了解为什么不是。PredicatenonEmptyStringPredicate=(Strings)->!s.isEmpty(); 最佳答案 Predicate在这种情况下获取一个String作为参数并返回一个boolean。如果我们不把它

java - Java11中的谓词过滤所有元素

我正在转向使用Java11。学习一种新方法Predicate.not,我发现我当前的代码只查找猫科动物:Listanimals=List.of("cat","leopard","dog","lion","horse");Predicatecats=a->!a.equals("dog")&&!a.equals("horse");SetfilterCat=animals.stream().filter(cats).collect(Collectors.toSet());System.out.println(filterCat);输出是:leopard,cat,lion现在我正在尝试使用新方

java - 将参数传递给谓词

我有以下搜索条件图:privatefinalMapsearchMap=newHashMap();privatevoidinitSearchMap(){PredicateallDrivers=p->p.getAge()>=16;PredicateallDraftees=p->p.getAge()>=18&&p.getAge()allPilots=p->p.getAge()>=23&&p.getAge()我按以下方式使用这张map:pl.stream().filter(search.getCriteria("allPilots")).forEach(p->{p.printl(p.getPr

java - 将 Java 8 lambda 谓词与逻辑运算符相结合

我有一个Stream流而SomeClass有boolean方法isFoo()和isBar().我想检查流中的所有元素是否同时具有isFoo()和isBar()等于true。我可以通过SomeClass:isFoo和SomeClass::isBarlambdas单独检查这些条件。但是我如何将这两个lambda表达式与像and/&&这样的逻辑运算符结合起来呢?一个明显的方法是编写一个额外的lambda:stream.allMatch(item->item.isFoo()&&item.isBar());但我想避免编写额外的lambda。另一种方法是强制转换为Predicate:stream.

java - 使用 Set<String> 和 String 作为参数创建自定义谓词

我有一个String作为“ishant”和Set作为["Ishant","Gaurav","sdnj"]。我需要为此编写谓词。我试过下面的代码,但它不工作Predicate,String>checkIfCurrencyPresent=(currencyList,currency)->currencyList.contains(currency);如何创建Predicate这需要Set和String作为参数并能给出结果? 最佳答案 APredicate您当前使用的表示一个参数的谓词(boolean值函数)。您正在寻找BiPredica

java - 具有多个条件的 QueryDSL 谓词 SetPath.any

我有一个具有一对多关系的简单实体@Entity//andother@stuffpublicclassMember{@IdprivateLongid;privateStringname;privateListprograms;...}@EntitypublicclassProgram{@IdprivateLongid;privateLongprogramName;privateProgramTypeprogramType;privateLongprogramCost;...}现在使用QueryDSL,我想查询'所有成员都注册了programType="FULLTIME"且programC