我需要创建一组对象.关注的是我不希望在对象的hashCode和equals实现上进行散列或相等.相反,我希望哈希码和相等性仅基于每个对象的引用标识(即:引用指针的值).
我不确定如何在Java中执行此操作.
这背后的原因是我的对象无法可靠地实现equals或hashCode,在这种情况下,引用标识就足够了.
Jes*_*per 24
我想这java.util.IdentityHashMap就是你要找的东西(注意,没有IdentityHashSet).查找API文档:
此类
Map使用哈希表实现接口,在比较键(和值)时使用引用相等性代替对象相等性.换句话说,在一个IdentityHashMap,两个键中k1,k2当且仅当它们被认为是相等的(k1==k2).(在正常的Map实现中(比如HashMap)两个键k1,k2当且仅当它们被认为是相等的(k1==null ? k2==null : k1.equals(k2)).)这个类不是通用的
Map实现!虽然这个类实现了Map接口,但它故意违反了Map一般合同,它要求equals在比较对象时使用该方法.此类仅用于需要引用相等语义的罕见情况.
编辑:请参阅下面的Joachim Sauer的评论,Set基于某个特定的内容很容易Map.你需要做这样的事情:
Set<E> mySet = Collections.newSetFromMap(new IdentityHashMap<E, Boolean>());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4414 次 |
| 最近记录: |