假设我有一个对象,obj.hashCode()返回8973846,
我可以使用哈希码调用函数并获取对象吗?
答案 0 :(得分:2)
没有。 hashCode()
不是唯一的(即不同的对象可以具有相同的hashCode。即使是相同类型的不同对象也可以具有相同的hashCode
),因此不可能实现这样的方法。
答案 1 :(得分:1)
您可以做的最好的事情是,在创建对象时,将它们放入一个将哈希码映射到实例的大HashMap<Integer,Object>
中。这样,您就可以在以后检索它们。
但是有两个主要问题:
您可以尝试使用WeakHashMap
来缓解第二个问题,但这可能会导致更多问题:当您稍后尝试检索某个对象时,它可能已经消失...