gpt4 book ai didi

java - 为什么我们可以为 TreeSet 提供 Comparator,但不能为 HashSet 提供类似 Hasher 的东西?

转载 作者:行者123 更新时间:2023-11-30 05:58:19 26 4
gpt4 key购买 nike

在 Java 6 中,我的理解是,您可以在创建 TreeSet 时向 TreeSet 提供比较器,以覆盖集合中对象的“自然顺序”。

您是否有任何想法为什么 Java 不支持提供覆盖集合中对象的“自然散列”的“Hasher”?

编辑:从您那里获取意见可能会对我将来设计 API 时有所帮助。

谢谢。

最佳答案

以下是几个可能的原因:

  • 简单 - 大多数人不需要多个哈希函数,因此为了保持 API 简单,依赖单个 Object.hashCode() 方法是有意义的

  • 性能 - 至少在标准库中,HashSets 和 HashMaps 等需要相当程度的优化,因为他们是如此广泛使用。这没有意义有调用的开销单独的“哈希器”,无论多么小开销可能是。

  • 私有(private)字段 - 存在以下问题:hashCode() 可能依赖于 private领域,可能很难为某些人创建外部“哈希器”对象。

关于java - 为什么我们可以为 TreeSet 提供 Comparator,但不能为 HashSet 提供类似 Hasher 的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4440409/

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