gpt4 book ai didi

基于对象引用的 Java 映射?

转载 作者:搜寻专家 更新时间:2023-10-30 19:54:15 25 4
gpt4 key购买 nike

所以,我想使用一个 java 映射,其中的键是一个对象...但不是键控对象的值,而是键控对象 ID。因此,像下面这样的代码将是完全有效的代码:

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

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

map.put(s1, 10);
map.put(s2, 47);

这可能吗?有没有一种简单的方法可以做到这一点,而无需在我的类里面构建对象 ID 或一些过于繁琐的东西?基本上,我需要一种方法将不断变化的值列表与给定对象相关联。对于具有相同值的对象,此值列表可能会有所不同,因此默认映射不起作用。除了重构我的类来自己做这件事(考虑到时间,这不是一个真正的选择)还有什么我可以使用的吗?

谢谢。

编辑:更多信息。

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

最佳答案

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

关于基于对象引用的 Java 映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5797373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com