我正在爲我的問題尋找合適的數據結構。我希望能夠使用兩個鍵儘可能高效地選擇節點對象。插入和刪除也需要高效。基本上每個節點對象都有一對兩個鍵。這些配對是獨一無二的,但個別密鑰卻不是。我需要能夠爲兩個鍵之一選擇一組具有特定值的節點。使用雙鍵創建散列表
實施例:
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