Google Guava BiMap - 反向获取方法不起作用
Google Guava BiMap - inversed get-Method doesn't work
我真的不喜欢在这里问,但这次我搜索了,我阅读了文档,我在其他地方寻求帮助,显然没有人知道如何解决我的问题。
我将 google Guava 中的 BiMap
用于我的 java 应用程序,因为我有一种情况需要特定值的键(键和值都是独特)。在非反转视图中,键是 long
,值是自己的 class(它还实现了 hashCode
和 equals
)。
现在,我有一个特定的条目,我只知道它的值(但是,我知道这个条目存在,我做了一些检查,您也可以在下面看到)。但是如果我反转映射并使用已知值作为键,则返回的值始终是 null
。为了确保问题出在这个特定点,我硬编码了一些调试行:https://hastebin.com/gisojogune.cs
(不幸的是,我无法将其粘贴到其他地方,因为我使用的是移动 atm)
如果有人能帮助我,我会很高兴,因为我必须在明天之前完成它。耶。
谢谢,
强尼
编辑:在 link 中,另一个 Map
应该被称为 requests
。别介意。
从您提供的稀缺信息来看,很难提供帮助,但这一行是可疑的:
var link = requests.get(aLong); // this should be the same instance that is assigned to the key 458653247347884035L
如果 aLong
与 458653247347884035L
不同(但我不确定这是否是您的意思),那么 不可能1 表示 BiMap
包含两个相同的 Link
,但密钥不同。如果那是你的意思,那么你的 hashCode
/equals
逻辑可能有问题。
1 作为证明,尝试 运行 这个小片段:
String link = "same-instance";
BiMap<Long, String> requesters = HashBiMap.create();
requesters.put(1L, link);
requesters.put(2L, link);
您将得到以下异常:
java.lang.IllegalArgumentException: value already present: same-instance
我真的不喜欢在这里问,但这次我搜索了,我阅读了文档,我在其他地方寻求帮助,显然没有人知道如何解决我的问题。
我将 google Guava 中的 BiMap
用于我的 java 应用程序,因为我有一种情况需要特定值的键(键和值都是独特)。在非反转视图中,键是 long
,值是自己的 class(它还实现了 hashCode
和 equals
)。
现在,我有一个特定的条目,我只知道它的值(但是,我知道这个条目存在,我做了一些检查,您也可以在下面看到)。但是如果我反转映射并使用已知值作为键,则返回的值始终是 null
。为了确保问题出在这个特定点,我硬编码了一些调试行:https://hastebin.com/gisojogune.cs
(不幸的是,我无法将其粘贴到其他地方,因为我使用的是移动 atm)
如果有人能帮助我,我会很高兴,因为我必须在明天之前完成它。耶。
谢谢, 强尼
编辑:在 link 中,另一个 Map
应该被称为 requests
。别介意。
从您提供的稀缺信息来看,很难提供帮助,但这一行是可疑的:
var link = requests.get(aLong); // this should be the same instance that is assigned to the key 458653247347884035L
如果 aLong
与 458653247347884035L
不同(但我不确定这是否是您的意思),那么 不可能1 表示 BiMap
包含两个相同的 Link
,但密钥不同。如果那是你的意思,那么你的 hashCode
/equals
逻辑可能有问题。
1 作为证明,尝试 运行 这个小片段:
String link = "same-instance";
BiMap<Long, String> requesters = HashBiMap.create();
requesters.put(1L, link);
requesters.put(2L, link);
您将得到以下异常:
java.lang.IllegalArgumentException: value already present: same-instance