首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MultiKeyMap获取法

MultiKeyMap获取法
EN

Stack Overflow用户
提问于 2011-11-28 16:33:21
回答 10查看 23.5K关注 0票数 7

我想使用Apache中的MultiKeyMap,因为我需要一个带有两个键和一个值的HashMap。要将元素放在这里,我会这样做:

代码语言:javascript
复制
private MultiKeyMap multiKey = new MultiKeyMap();
multiKey.put("key1.1", "key2.1", "value1");

对于get元素,我这样做:

代码语言:javascript
复制
String s = multiKey.get("key1.1");

但是字符串的.如果我通过这两把钥匙,就像这样:

代码语言:javascript
复制
String s = multiKey.get("key1.1", "key2.1");

字符串带有值value1.

当我只传递两个键中的一个( MultiKeyMap )时,如何扩展MultiKeyMap以获得正确的值?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-11-28 16:38:26

如果您只需要一个键就可以得到一个值,那么您就有了一个普通的旧HashMap。

代码语言:javascript
复制
private Map<String, String> map = new HashMap<>();

map.put("key1.1", "value1");
map.put("key2.1", "value1");

对于get元素,您可以这样做:

代码语言:javascript
复制
String s = map.get("key1.1"); // s == "value1"

当必须提供两个键时,都需要MultiKeyMap。

票数 5
EN

Stack Overflow用户

发布于 2011-11-28 16:38:46

如果使用两个键指定一个值,则需要两个键才能将其返回。哈希函数的设计并不是为了返回与这两个键中的一个相关联的所有可能值。为此,您可能需要找到不同的数据结构。

票数 5
EN

Stack Overflow用户

发布于 2011-11-28 16:39:42

MultiKeyMap是关于使用元组作为键,而不是将一个值匹配到多个键。使用一个普通的地图,只需将你的值放两次,用不同的键。

在删除值时需要更多的谨慎。删除第一个键的值时,是否要自动删除具有相同值的其他键?如果是这样的话,您需要循环所有键并手动删除具有相同值的键,这可能是效率低下的,或者保留某种反向映射以快速查找特定值的键。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8299029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档