我可以在Java中使用双键映射吗?

时间:2012-01-16 14:31:03

标签: java map

  

可能重复:
  How to implement a Map with multiple keys?

想象一下包含K1,K2和D列的表格。我可能需要按键K1或K2或两者搜索数据。除了创建几个保留引用的地图之外,Java中是否有任何“标准”解决方案?

4 个答案:

答案 0 :(得分:1)

考虑使用番石榴Table

来自documentation

的示例
Table<Vertex, Vertex, Double> weightedGraph = HashTable.create();
weightedGraph.put(v1, v2, 4);
weightedGraph.put(v1, v3, 20);
weightedGraph.put(v2, v3, 5);

weightedGraph.row(v1); // returns a Map mapping v2 to 4, v3 to 20
weightedGraph.column(v3); // returns a Map mapping v1 to 20, v2 to 5

答案 1 :(得分:0)

如果你只想搜索(k1,k2)元组,我会建议MultiKeyMap,或者更可能的是,一个包装器对象进入标准Map。但是如果你想用两者,或者一个或另一个进行搜索 - 听起来像嵌入式SQL引擎可能会更好。

编辑:取决于您的数据大小,您是否还需要(k1,k2,k3)查找,您需要多少这样的结构(SQL引擎相对较重), Mairbek Khadikov对番石榴桌的回答可能会更好。

答案 2 :(得分:0)

如果您希望按一系列键搜索数据,则可以使用navigable map

看看这段代码:

NavigableMap<String, String> orig = new TreeMap();
orig.put("1", "A");
orig.add("2", "B");
orig.add("3", "C");
orig.add("4", "D");
orig.add("5", "E"); 
//this submap will now contain "C", "C"
SortedMap submap = orig.subMap("2", "4");

答案 3 :(得分:0)

我会将Map包装在一个对象中,并提供一些使用两个键搜索数据的方法。之后,您可以简单地交叉2个结果集并返回它们。很好很简单:)。