[英]Efficient data structure with two keys
我有一個Android應用程序,我在其中使用HashMap
來存儲容器對象。 在App的過程中,連續訪問數據結構。
但是,大約一半的時間,引用不是映射中的Key
,而是來自對象的另一個變量,所以我最終一次又一次地在結構上循環。
是否有一種有效的方法可以在Java中的兩個鍵上建立索引數據結構?
為什么不是兩個具有不同鍵的映射,但兩者都指向相同的值?
管理兩個映射,其中兩組鍵映射到相同的底層對象集。 將它們包裝在具有類似於法線貼圖的方法的類中,但在內部搜索兩個鍵,並同步添加和刪除。
這是有效的,因為操縱(在最壞的情況下)與管理單個地圖成線性比例。
您可以使用一個包含兩個鍵的地圖:
Map<Object, Person> personMap = new HashMap<Object, Person>()
Person person = ...
personMap.put(person.getName(), person)
personMap.put(person.getSSN(), person)
然后你可以通過密鑰檢索。 這當然假設您的密鑰用法沒有沖突。 如果您的兩個鍵是不同的類類型,那么這是安全的。 如果您的鍵是相同的類型(示例String
),那么您可能不想使用這兩個映射解決方案。
后續:這種方法確實會失去類型安全性,但它只影響put(K, V)
和putAll(Map<? extends K, ? extends V>)
,因為get(Object)
和containsKey(Object)
總是接受賓語。
因此,有了這個限制,我將包裝這個單一的地圖或者使用兩個地圖解決方案(也包裝)。
我創建了一個結合了兩個變量的關鍵對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.