- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
据我所知,C# 中没有直接的等效项。我目前的想法是使用带有自定义 IEqualityComparer 的字典,检查引用是否相等。
然而,这似乎失去了散列所获得的优势。有没有办法从每个不同的对象中获取单独的哈希码?或者这是不可能的,我应该使用其他方法吗?
最佳答案
您可以使用 RuntimeHelpers.GetHashCode(object)
它以非虚拟方式调用 object.GetHashCode()
- 这相当于 Java 中的 System.identityHashcode
。我认为这就是你所追求的。因此,您的 IEqualityComparer
将仅使用它来进行散列,并使用 object.ReferenceEquals
来实现相等性。
关于Java IdentityHashMap 的 C# 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/838965/
我使用java.util.IdentityHashMap进行了测试,请参阅 public class IdentityHashMapTest{ public static void main(
根据 Javadocs IdentityHashMap,它说 This class implements the Map interface with a hash table, using refe
谁能告诉IdentityHashMap的重要用例是什么? 最佳答案 当您希望您的 key 不通过 equals 而是通过 == 进行比较时,您可以使用 IdentityHashMap。如果您要进行大量
/** * Returns index for Object x. */ private static int hash(Object x, int length) { int h = S
我有一个简单的 IdentityHashmap: IdentityHashmap map; 现在我想使用字符串作为键。主要问题是 java 字符串池: String a = "Hello"; Stri
在某些情况下,map 中使用的键对象不会覆盖 Object 中的 hashCode() 和 equals(),例如,使用 socket Connection 或 java.lang.Class 作为键
我一直在浏览 IdentityHashMap 的文档.那个类(class)有一个constructor这需要 expectedmaxsize。 public IdentityHashMap(int e
在 IdentityHashMap 类的默认构造函数中,调用了一个私有(private)的 init() 方法,使默认大小为 64。 请在下面找到代码: private static final in
我需要一个 HashMap(1) 通过对象引用匹配键,以及(2) 迭代时保持插入顺序 这些功能分别在 IdentityHashMap 和 LinkedHashMap 中实现。 有什么方法可以得到适合我
特别是当它们与移动垃圾收集器一起使用时。对象的当前内存位置无法使用,因为它可能会在下一次收集时发生变化,那么对象哈希使用什么? 最佳答案 希望这个问题对您有所帮助:How does the JVM e
正如我们所知,在 java 集合框架中,Map 中的每个类都使用 Chaining 来解决冲突,但 IdentityHashMap 使用对其进行线性探测。 如果你看 java 文档,它已经提到: Fo
据我了解,以下代码应打印 false,因为它正在执行基于 identity 的比较。 但是,当我运行以下代码时,它正在打印 true: public class Test1 { public st
我知道 IdentityHashMap ,但我需要使用类似 "IdentitySet" 的东西(使用 equals 作为 o1 == o2 )。我将使用一个“提取器”( JavaFX )来收听 Obs
我正在创建 3 个同一类的对象:A、B、rB。这里rB指的是B。A和B的值相等。我已经重写了比较值的 equals 方法。 所以 A.equals(B), A.equals(rB) and B.equ
我需要一个 Map 实现,它共享 IdentityHashMap 和 WeakHashMap 的属性(引用相等而不是 equals() 和键上的弱引用)。 您推荐哪种实现(它必须在 Android 上
据我所知,C# 中没有直接的等效项。我目前的想法是使用带有自定义 IEqualityComparer 的字典,检查引用是否相等。 然而,这似乎失去了散列所获得的优势。有没有办法从每个不同的对象中获取单
Identity HashMap 是 Java 中的特殊实现,它比较对象引用而不是 equals() 并且还使用 identityHashCode() 而不是 hashCode()。此外,它使用lin
我正在遍历一个数据结构,想要构建一个映射 X->Y 的字典,其中 X 是我正在遍历的数据结构中的一个字段,Y 是我正在构建的数据结构中的一个字段苍蝇。 X 是不可散列的类型。 最佳答案 Java的Id
public static void main(String[] args) { IdentityHashMap m1 = new IdentityHashMap(); Integer
我是一名优秀的程序员,十分优秀!