Tag: 哈希码

当toString()和hashCode()被覆盖的时候,如何获得java中对象的“对象引用”?

我想打印一个Java对象的“对象引用”用于debugging目的。 即根据情况确定对象是相同的(或不同的)。 问题是,有问题的类inheritance自另一个类,它重写了通常给我的id toString()和hashCode()。 示例情况:运行一个multithreading应用程序,其中我(在开发期间)要检查所有线程是否使用资源对象的相同实例。

为什么不String的hashCode()caching0?

我注意到在String 6的Java源代码中,hashCode只caching了除0以外的值。性能的差异由以下片段展现: public class Main{ static void test(String s) { long start = System.currentTimeMillis(); for (int i = 0; i < 10000000; i++) { s.hashCode(); } System.out.format("Took %d ms.%n", System.currentTimeMillis() – start); } public static void main(String[] args) { String z = "Allocator redistricts; strict allocator redistricts strictly."; test(z); test(z.toUpperCase()); } } 在ideone.com中运行这个提供了以下输出: Took 1470 […]

hashCode()和identityHashCode()如何在后端工作?

Object.hashCode()和System.identityHashCode()如何在后端工作? identityHashCode()是否返回对象的引用? hashCode()是否依赖于? 的对象? ==运营商如何在后端工作。 hashCode()和identityHashCode()之间有什么区别?

在使用JPA和Hibernate时应该如何实现equals和hashcode

应该如何在Hibernate中实现模型类的equals和hashcode? 什么是常见的陷阱? 在大多数情况下,默认实现是否足够好? 有没有使用商业密钥的意义? 在我看来,在任何情况下都很难做到这一点,比如懒惰的抓取,身份证生成,代理等等。

良好的string散列函数

我试图想出一个好的散列函数的string。 我认为总结string中前五个字符的unicode值可能是一个好主意(假设它有五个,否则停止它的结束)。 这是一个好主意,还是一个坏主意? 我在Java中这样做,但我不会想象这会有很大的不同。

什么是对象的哈希码,如果hashCode()没有被覆盖?

如果hashCode()方法没有被覆盖,那么在Java中的任何对象上调用hashCode()的结果是什么?

可变的hashmap键是一个危险的做法吗?

使用可变对象作为Hashmap键是不好的做法吗? 当您尝试使用已修改足以更改其哈希码的密钥从Hashmap中检索值时会发生什么? 例如,给出 class Key { int a; //mutable field int b; //mutable field public int hashcode() return foo(a, b); } 与代码 HashMap<Key, Value> map = new HashMap<Key, Value>(); Key key1 = new Key(0, 0); map.put(key1, value1); key1.setA(5); key1.setB(10); 如果我们现在调用map.get(key1)会怎么样? 这是安全还是可取的? 或者是依赖于语言的行为?

为什么在hashCode中使用素数?

我只是想知道为什么在类的hashCode()方法中使用素数? 例如,当使用Eclipse生成我的hashCode()方法时,总是使用素数31 : public int hashCode() { final int prime = 31; //… } 参考文献: 这里是一个关于哈希码和哈希如何工作,我发现(C#,但概念是可转移的)的文章的一个很好的入门: Eric Lippert的准则和GetHashCode()

hashCode方法的最佳实现

我们如何决定集合的hashCode()方法的最佳实现(假设equals方法已被正确覆盖)?

我怎样才能生成一个MD5哈希?

有没有什么方法可以在Java中生成一个string的MD5散列?