草庐IT

一元谓词

全部标签

java - Java 8 中的谓词

我有一个程序可以分析文本的某些属性。代码的基本结构对于所有属性都是相同的,它仅在一行中有所不同:webDataField.containsAttributeXYZ();如下所示:for(intindex=0;index我不想为每个条件编写相同的代码(并在代码中重复自己),我想编写一次代码的主体并将条件(计算结果为真或假)传递给方法。我是JavaPredicate的新手,但如果我理解正确的话,这正是Java中谓词的功能。这是否迫使我在其自己的类中编写每个条件,然后让该类实现Predicate接口(interface)?如果是这样,该函数(之前在包含类似函数的类中声明的)将需要转换为如下形

java - 可以在 Hazelcast 中通过键而不是值进行查询(使用谓词)?

在Hazelcast中,是否可以根据键的属性而不是值来查询IMap?所有Hazelcast示例都显示按值查询。例如,对于具有字符串键的员工映射:IMapemployees;典型的搜索谓词然后根据员工属性(姓名、薪水等)进行搜索。但是我的案例使用了更复杂的键,例如:IMapmyData;因此,如果DataAttributes具有以下字段:classDataAttributes{StringtheDescription;DatetheStartTime;publicStringgetDescription(){returntheDescription;}//etc....}我想编写一个可以

java - 基于 Java 8 中的属性和谓词删除重复项

问题基于https://stackoverflow.com/a/29671501/2517622给定一个包含id、name和IQ的员工列表:Listemployee=Arrays.asList(newEmployee(1,"John",80),newEmployee(1,"Bob",120),Employee(1,"Roy",60),newEmployee(2,"Alice",100));我要输出:[Employee{id=1,name='Bob',iq=120},Employee{id=2,name='Alice',iq=100}]因此,根据员工的id属性从列表中删除重复项,并出于显

基于谓词的Java 8 Stream indexOf方法

这个问题在这里已经有了答案:StreamWaytogetindexoffirstelementmatchingboolean(6个回答)关闭4年前。我刚刚遇到这样的情况,我需要知道一个元素在列表中的索引(位置),但只有一个谓词表达式来标识该元素。我找了一个类似的Stream函数intindex=list.stream().indexOf(e->"TESTNAME".equals(e.getName()));但无济于事。当然,我可以这样写:intindex=list.indexOf(list.stream().filter(e->"TESTNAME".equals(e.getName()

java - 函数和谓词参数不明确?

使用Java8,我得到以下代码的编译器错误:publicclassAmbiguous{publicstaticvoidcall(){SomeDataClassdata=newSomeDataClass();callee(data,SomeDataClass::getString);//compilererrors://1.atcalleemethodname://Themethodcallee(SomeDataClass,Function)isambiguousforthetypeAmbiguous//2.atlambda://Typemismatch:cannotconvertfro

java - 使用 Guava 10 的谓词和函数接口(interface)与 GWT 2.4.0

GWT2.4.0和GuavaGWT10.0.1是否支持Predicate和Function?两个接口(interface)都标记为@GwtCompatible。在调试托管模式下运行项目时,我在使用Predicate时收到运行时验证错误:[ERROR][MyProject]-LineXXY:Theimportjavax.annotation.Nullablecannotberesolved[ERROR][MyProject]-LineYYY:Nullablecannotberesolvedtoatype从其他StackOverflow帖子来看,我认为这些错误不应该要求在Guava版本09

java - 在 Hibernate QL 中否定一元运算符

我正在尝试使用以下hql切换boolean字段:updateEntityesete.booleanField=note.booleanFieldwheree.id=?1;不幸的是,抛出“QuerySyntaxException:意外标记:不在附近……”。我的问题是:hibernate是否有一些支持这种表达式的一元运算符?或者任何众所周知的技巧?sql支持这样的查询(postgresql):updateentity_tablesetbooleanField=not(booleanField); 最佳答案 要切换boolean属性,相当

java - 对一元静态方法的方法引用在 Function 和 BiFunction 参数类型之间不明确

考虑以下简化的测试用例:importjava.util.AbstractList;importjava.util.Collection;importjava.util.Iterator;importjava.util.List;importjava.util.function.BiFunction;importjava.util.function.Function;publicfinalclassExample{staticclassPairList{publicvoidreplaceAllSecond(FunctionsecondFunction){}publicvoidreplac

Java - 将谓词转换为字符串

我想知道是否有任何方法可以将Predicate转换为String。例如会有一个函数:publicstaticStringconvertPredicate(PredicateobjPredicate){return?...}这样下面的调用将返回(obj)->obj.value==1:convertPredicate((obj)->obj.value==1) 最佳答案 不,一般来说在Java中是不可能的。人们可能会尝试分析和反编译lambda类的字节码(虽然获取此类的字节码已经是非常不平凡的任务),但这样的解决方案将非常复杂和脆弱。未指

java - 为一元非表达式生成 JVM 字节码

假设您正在编写一个Java(或Java的子集)编译器,并且您想要为一元非表达式!E生成字节码。您已经通过了类型检查,所以您知道E的类型为boolean,即它将推送1或0进入操作数栈。一种方法是(在Jasmin语法中):Eifeqtruelabeliconst_0gotostoplabeltruelabel:iconst_1stoplabel:即如果堆栈上有0,则压入1,否则压入0。另一种方法是利用boolean只是一个int值1或0,就是说!E=(E+1)%2并生成Eiconst_1iaddiconst_2irem使用一个比另一个有优势吗?还是完全不同? 最