【发布时间】:2015-01-10 23:04:57
【问题描述】:
我正在使用Pattern.compile("XXX").asPredicate() 创建许多谓词来处理一些数据。看看它的实现它只有这个
public Predicate<String> asPredicate() {
return s -> matcher(s).find();
}
内联生成谓词的哈希码是什么?根据https://docs.oracle.com/javase/8/docs/api/java/util/function/Predicate.html,它没有指定哈希码...比较我的应用程序中的值,它似乎每次都只是一个新的哈希码,即使对于相同的表达式也是如此。所以我只是好奇它是如何获得它的哈希码的。
【问题讨论】:
-
为什么要寻找哈希码?当您比较“字符串”(在您的示例中提到)时,您必须使用“isEqual”方法来比较字符串?
-
这里只是为了知识。我最初想知道如果我正在处理具有复杂谓词的大列表,我将如何缓存过滤器的结果。我想可能是一个带有一组静态谓词的 HashMap ......无论哪种方式,目前都不会走这条路。
-
它只是使用 Object.hashCode() 实现。
标签: java lambda hashcode predicate