0

我真的不喜欢在这里问,但是这次我已经搜索过,我已经阅读了文档,我已经在其他地方寻求帮助,显然没有人知道如何解决我的问题。

我将BiMap来自 google Guava 的用于我的 java 应用程序,因为我有一种情况,我需要特定值的键(键和值都是唯一的)。在非反转视图中,键是 a long,值是一个自己的类(它也实现了hashCodeand equals)。

现在,我有一个特定的条目,我只知道它的值(但是,我知道这个条目存在,我做了一些检查,你也可以在下面看到)。但是,如果我反转映射并将已知值用作键,则返回的值始终为null. 为了确保问题出在这个特定点,我对一些调试行进行了硬编码:https ://hastebin.com/gisojogune.cs (不幸的是,我无法将其粘贴到其他地方,因为我在移动自动取款机上)

如果有人能帮助我,我会很高兴,因为我必须在明天之前完成这个。耶。

谢谢,约翰尼

编辑:在链接中,另一个Map应该被称为requests. 别介意。

4

1 回答 1

0

从您提供的稀缺信息来看,很难提供帮助,但这条线很可疑:

var link = requests.get(aLong); // this should be the same instance that is assigned to the key 458653247347884035L

如果aLong不同于458653247347884035L(但我不确定这是否是您的意思),那么1不可能包含两个具有不同键的相同 s 。如果这就是您的意思,那么您的/逻辑可能有问题。BiMapLinkhashCodeequals


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
于 2018-07-21T20:26:56.093 回答