基于对象引用的Java映射?

ryb*_*ome 13 java

所以,我想使用一个java映射,其中键是一个对象......但它不是键入对象的值,而是键入对象ID.因此,类似下面的内容将是完全有效的代码:

Map<String, Integer> map = new HashMap<String, Integer>();

String s1 = "hi!";
String s2 = "hi!";

map.put(s1, 10);
map.put(s2, 47);
Run Code Online (Sandbox Code Playgroud)

这可能吗?有没有一种简单的方法可以在没有构建对象ID或类中过于繁琐的情况下执行此操作?基本上,我需要一种方法来将不断变化的值列表与给定对象相关联.对于具有相同值的对象,此值列表可能会有所不同,因此默认映射不起作用的原因.除了重构我的班级自己这样做(不是真的可以选择,考虑到时间)有什么我可以使用的吗?

谢谢.

编辑:更多信息.

上面的例子只是一个例子.我将使用它来实现统一成本搜索算法.对于使用此算法进行搜索的任何给定节点,还必须具有到目前为止所采用的路径.基于值的哈希映射不起作用的原因是该算法可以重复已经探索过的节点.在这一点上,路径会有所不同,尽管"我现在在哪里?"的价值.是相同的.

Seb*_*kow 20

我认为IdentityHashMap可以解决问题.但是,由于您使用了字符串文字,因此两个字符串都将指向同一个实例.尝试使用s1 = new String("hi!")和s2 = new String("hi!")以及IdentityHashMap.