我正在为我的问题寻找合适的数据结构。我希望能够使用两个键尽可能高效地选择节点对象。插入和删除也需要高效。基本上每个节点对象都有一对两个键。这些配对是独一无二的,但个别密钥却不是。我需要能够为两个键之一选择一组具有特定值的节点。使用双键创建散列表
实施例:
Node1上具有键a1和b1
节点2具有密钥A1及B2
节点3具有密钥A2和B2
我想是例如能够选择具有密钥a1,b1的节点,但也选择具有b2的所有节点作为密钥2。
我当然可以制作两个HashMaps(每个键一个),但这是一种丑陋的解决方案,因为当我添加或删除某些东西时,我必须在两个地图中执行此操作。由于会有大量的添加和删除操作,我宁愿一次去做。有没有人有关于如何做到这一点的任何想法?
很明显,将两个键合并在一起的单个键不能解决问题,因为我还需要能够搜索单个键而不必搜索整个地图。这不会很有效。问题是效率问题。我可以在地图上的每个条目中搜索特定的键,但是我想使用散列,以便可以使用两个键之一即时选择多个节点对象。
我不是在寻找类似于MultiKeyMap的东西,因为在这个数据结构中第一个键总是保持不变,你只能添加键而不能用另一个键替换第一个键。我希望能够在第一个和第二个键之间切换。
我确实不想用相同的密钥存储多个对象。如果你看一下这个例子,你可以看到这两个键总是唯一的。这可以看作是一个单一的密钥,因此我不会在同一个密钥下存储多个对象。但是,如果您查看各个键,这些键并不是唯一的,因此我确实需要存储由各个键引用的多个对象。
你在找什么像[这个](http://commons.apache.org/collections/apidocs/org/apache/commons/collections/map/MultiKeyMap.html)? – aishwarya 2011-12-21 14:18:17
是否要用同一个密钥存储多个对象? – 2011-12-21 14:34:03