簡體   English   中英

高效的數據結構,帶有兩個鍵

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM