- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经关注了这个answer基于相同字段检查两个不同类型的列表是否相等。
这里是工作函数:
private <T, U> boolean compareLists(List<T> list1, List<U> list2, BiPredicate<T, U> predicate) {
return list1.size() == list2.size() &&
list1.stream().allMatch(itme1 -> list2.stream().anyMatch(item2 -> predicate.test(itme1, item2)));
}
但是当我这样调用它时
compareLists(list1, list2,
(item1, item2) ->
item1.someField11.equals(item1.someField21) && item1.someField12.equals(item1.someField22)
)
我得到无法解析符号“someField11”
(其他字段相同)
我必须以下面的方式声明它才能使其工作
BiPredicate<Foo1, Foo2> biPredicate = (item1, item2) ->
item1.someField11.equals(item1.someField21) && item1.someField12.equals(item1.someField22)
那么如何让它在没有额外局部变量biPredicate
的情况下工作?
list1
是 Set
类型,而不是 List
,因此我将函数签名更改为 Collection
最佳答案
看起来类型推断进展不顺利。您可以自己指定参数类型,如下所示:
compareLists(list1, list2,
(Foo1 item1, Foo2 item2) ->
item1.someField11.equals(item1.someField21) && item1.someField12.equals(item1.someField22)
)
关于java - 将 BiPredicate 作为函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61494706/
在学习Java 8的类(class)时我们现在进入主题Generics和Lambda expressions 。我们被要求制作以下方法 Generic而不是String仅: public static
我已经关注了这个answer基于相同字段检查两个不同类型的列表是否相等。 这里是工作函数: private boolean compareLists(List list1, List list2,
我有以下代码: public class BiPredicateTest { public static void main(String[] args) { BiPredic
我有文件流,以及一个将两个文件作为参数的方法,如果它们具有相同的内容则返回。 我想将此文件流减少为一组(或映射)集合,将具有相同内容的所有文件分组。 我知道可以通过重构比较方法来获取一个文件,返回一个
我是 Java 工程师,需要编写从 Java 到 C# 的相同解决方案。现在我必须重写这个示例: private static final BiPredicate predicate = (s
我有一个整数流,我想找到两个数字之和等于另一个数字。所以我想出了以下解决方案: BiPredicate p = (price1, price2) -> price1.intValue() + pric
我有两个 lambda 函数(谓词): final Predicate isElement = node -> node.getNodeType() == Node.ELEMENT_NODE; fin
如果旅程时间表不重叠,则旅程列表只能由一个人完成。例如该列表应返回 true,因为日期不重叠。 Journey 1: "2019-09-10 21:00" --> "2019-09-10 21:10"
这个问题在这里已经有了答案: Difference between and in Java [duplicate] (14 个答案) 关闭 4 年前。 我不知道为什么它不起作用。 eclipse
我有一组货币为 Set和 RequiredCurrency 为 Set .我必须检查 currency set 中是否存在任何所需的货币。我写了BiPredicate对于如下所示,并尝试在 anyMa
return VAL_MAP.getOrDefault(push.type, listOf { _: Push, _: SystemState -> false}.stream().allMatch
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 5 年前。 Improve
我有两个列表。一个是我从数据库创建的,一个是从 Csv 文件创建的。现在我想在包含数据库和 csv 文件的列表中收集记录。我写了如下代码 BiPredicate sameTrainee = (dbTr
我想在文件树中找到所有文件。在 Java 中,我会写一些类似的东西: try(Stream !attributes.isDirectory())) { paths.forEach(
我正在练习我的 Java 8 技能。我遇到了一个奇怪的(对我来说)代码。我的 bean 类 Person 具有重写的 equals 方法。然后我尝试用 equals 方法实现 BiPredicate
我是一名优秀的程序员,十分优秀!