【问题标题】:What is the HashCode for inline Predicates?什么是内联谓词的 HashCode?
【发布时间】: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


【解决方案1】:

Lambda 可能会使用 Object 的默认 hashCode() 实现,它会根据对象的身份返回一些内容。

【讨论】:

  • 你知道是否可以覆盖实现吗?我想知道两个 lambdas 是否相同。 (有相同的文字)
  • 然后使用老式的方法创建一个匿名类。
猜你喜欢
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-20
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-19
相关资源
最近更新 更多