我想使用Apache中的MultiKeyMap,因为我需要一个带有两个键和一个值的HashMap。要将元素放在这里,我会这样做:
private MultiKeyMap multiKey = new MultiKeyMap();
multiKey.put("key1.1", "key2.1", "value1");对于get元素,我这样做:
String s = multiKey.get("key1.1");但是字符串的空.如果我通过这两把钥匙,就像这样:
String s = multiKey.get("key1.1", "key2.1");字符串带有值value1.
当我只传递两个键中的一个( MultiKeyMap )时,如何扩展MultiKeyMap以获得正确的值?
发布于 2011-11-28 16:38:26
如果您只需要一个键就可以得到一个值,那么您就有了一个普通的旧HashMap。
private Map<String, String> map = new HashMap<>();
map.put("key1.1", "value1");
map.put("key2.1", "value1");对于get元素,您可以这样做:
String s = map.get("key1.1"); // s == "value1"当必须提供两个键时,都需要MultiKeyMap。
发布于 2011-11-28 16:38:46
如果使用两个键指定一个值,则需要两个键才能将其返回。哈希函数的设计并不是为了返回与这两个键中的一个相关联的所有可能值。为此,您可能需要找到不同的数据结构。
发布于 2011-11-28 16:39:42
MultiKeyMap是关于使用元组作为键,而不是将一个值匹配到多个键。使用一个普通的地图,只需将你的值放两次,用不同的键。
在删除值时需要更多的谨慎。删除第一个键的值时,是否要自动删除具有相同值的其他键?如果是这样的话,您需要循环所有键并手动删除具有相同值的键,这可能是效率低下的,或者保留某种反向映射以快速查找特定值的键。
https://stackoverflow.com/questions/8299029
复制相似问题