gpt4 book ai didi

java - 如何异或谓词?

转载 作者:行者123 更新时间:2023-12-05 08:36:54 27 4
gpt4 key购买 nike

我需要一种方法,其中我需要xor 谓词,我将接收这些谓词作为方法参数。对于两个谓词,我有一个有点工作但麻烦的解决方案。举一个简单、最小和可重现的例子:

Predicate<String> pred1  = s -> s.contains("foo");
Predicate<String> pred2 = s -> s.contains("bar");

String toTest = "foobar";

对于给定的谓词和测试字符串,逻辑OR 将返回true:

boolean oneOnly   = pred1.or(pred2).test(toTest);

但对于我的用例,它应该返回 false,因为两个子字符串都包含在内。只有当且仅当满足一个条件时,它才应该返回 true。

对于两个 prdeicates 我有这个

static boolean xor(Predicate<String> pred1, Predicate<String> pred2, String toTest){
return pred1.and(pred2.negate()).or(pred2.and(pred1.negate())).test(toTest);
}

是否有一种简单但方便的异或谓词方法?

最佳答案

跟进@xdhmoore 的回答,这太过分了,可以更简单地完成:

static <T> Predicate<T> xor(Predicate<T> pred1, Predicate<T> pred2) {
return t -> pred1.test(t) ^ pred2.test(t);
}

关于java - 如何异或谓词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67258123/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com