[英]Any implementation of Map<K1, K2, V>, i.e. two keys?
我需要一張有兩個鍵的地圖,例如
Map2<String /*ssn*/, String /*empId*/, Employee> _employees;
這樣我就可以
_employees.put(e.ssn(), e.empId(), e)
然后
_employees.get1(someSsn);
_employees.get2(someImpId);
甚至
_employees.remove1(someImpId);
我不知道為什么我要停在兩個,為什么不多,可能是因為我現在需要的情況是這樣:-)但是類型需要處理固定數量的鍵是類型安全的 - 類型參數不能是vararg :-)
感謝任何指針,或建議為什么這是一個壞主意。
我的第一個想法是:我認為最簡單的方法是兩張地圖。
Map< String, Map< String,Employee> > _employees;
但從它的外觀來看,您只是希望能夠通過SSN或ID查找員工。 什么阻止你制作兩張地圖,或者最糟糕的是一個包含兩張地圖的類?
作為澄清,您是否正在尋找一個復合密鑰 ,即員工通過其SSN和ID的組合唯一標識,但不是單獨一個,或者您是否在尋找兩種不同的方式來引用員工?
我想主鍵是empId
,所以我會建立一個以其為關鍵的Map
,即empId
---> Employee
。 所有其他唯一屬性(例如ssn
)將被視為輔助屬性,並將使用單獨的Map
作為empId
的查找表(例如ssn
---> empId
)。
這種實現方式可以輕松添加/刪除員工,因為您只需要更改一個Map
,即empId
---> Employee
; 其他Map
只能在需要時重建。
Spiffy框架似乎提供了您正在尋找的東西。 來自Javadocs:
二維散列映射是一種HashMap,它使您能夠通過兩個鍵而不是一個鍵來引用值
相關的類是TwoDHashMap 。 它還提供了ThreeDHashMap 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.