这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:UsecasesforIdentityHashMapJava5中引入的IdentityHashMap有什么实际用途?
我需要一个Map实现,它共享IdentityHashMap和WeakHashMap的属性(引用相等而不是equals()和键上的弱引用)。您推荐哪种实现(它必须在Android上运行)? 最佳答案 如果您建议使用Guava,那么newMapMaker().weakKeys().makeMap()会直接完成这项工作,因为weakKeys使用键的引用相等性.weakKeys的文档说:Specifiesthateachkey(notvalue)storedinthemapshouldbewrappedinaWeakReference(by
我需要创建一组对象。问题是我不想将散列或相等性基于对象的hashCode和equals实现。相反,我希望哈希码和相等性仅基于每个对象的引用标识(即:引用指针的值)。我不确定如何在Java中执行此操作。这背后的原因是我的对象没有可靠地实现equals或hashCode,在这种情况下,引用身份就足够了。 最佳答案 我猜java.util.IdentityHashMap是您要查找的内容(请注意,没有IdentityHashSet)。查找API文档:ThisclassimplementstheMapinterfacewithahashtab
谁能告诉IdentityHashMap的重要用例是什么? 最佳答案 当您希望您的key不通过equals而是通过==进行比较时,您可以使用IdentityHashMap。如果您要进行大量引用处理,这将非常有用,但仅限于非常特殊的情况。 关于java-IdentityHashMap的用例,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/838528/
谁能告诉IdentityHashMap的重要用例是什么? 最佳答案 当您希望您的key不通过equals而是通过==进行比较时,您可以使用IdentityHashMap。如果您要进行大量引用处理,这将非常有用,但仅限于非常特殊的情况。 关于java-IdentityHashMap的用例,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/838528/
据我所知,C#中没有直接的等效项。我目前的想法是使用带有自定义IEqualityComparer的字典,检查引用是否相等。然而,这似乎失去了散列所获得的优势。有没有办法从每个不同的对象中获取单独的哈希码?或者这是不可能的,我应该使用其他方法吗? 最佳答案 您可以使用RuntimeHelpers.GetHashCode(object)它以非虚拟方式调用object.GetHashCode()-这相当于Java中的System.identityHashcode。我认为这就是你所追求的。因此,您的IEqualityComparer将仅使用