Aug*_* Li 0 java hashmap hashcode hashable
对于Hash数据结构,例如HashSet,HashMap等,我们需要实现哈希码。但是,这不是很方便。我们可以改用Hashable或Hasher吗?
这是Swift中的示例:https : //developer.apple.com/documentation/swift/hashable
在Java中,基本上有多种方法:
hashCode()从Object继承的方法(不是一个非常好的选择,因为它会忽略您的字段)hashCode()在自定义类中对@Override进行处理时使用该哈希值。正如用户Andreas指出的那样,该解决方案的一个缺点是,使用此方法处理原始类型值时,自动装箱绕行。除此之外:您当然可以hashCode()为需要的每个类重写自己,并“手动”计算字段中的哈希。或告诉您的IDE为您执行此操作。
最后,更进一步,JVM平台允许Lombok之类的库在编译阶段自动插入此类方法覆盖。甚至甚至可以将像kotlin这样的其他语言用于JVM及其数据类。