簡體   English   中英

在Java中從地圖檢索數據的有效方法

[英]Efficient way of retrieving data from the map in Java

當您具有字符串鍵和sortedSet值的映射時。 SortedSet值可能會在不同的鍵之間重復。 假設您的字符串鍵是您要購買雜貨或其他東西的日期,那么排序后的集合將是您在該日期購買的物品。 有沒有一種方法可以有效地檢索您購買特定項目的日期(即無需循環瀏覽每個鍵和sortedSet中的每個項目)?

我只是在Apache Commons Collections庫中閱讀。 我記得在使用Collections庫時可以有一個雙向地圖( BidiMap )。

定義一個允許在鍵和值之間進行雙向查找的映射。

此擴展的Map表示一個映射,其中鍵可以輕松地查找值,而值可以輕松地查找鍵。 該接口擴展了Map,因此可以在需要地圖的任何地方使用。 該界面提供了一個反向地圖視圖,可以完全訪問BidiMap的兩個方向。

相關文檔: https : //commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/BidiMap.html

該文檔還顯示了Apache Commons庫中提供的兩個已知實現,即OrderedBidiMap<K,V>SortedBidiMap<K,V>

使用普通的Map<String,SortedSet> ,除了迭代鍵並調用contains在地圖值上的內容外Map<String,SortedSet>您什么也不能做。

但是您可以實現自己的數據結構,該結構可以根據需要進行優化。 基本上,您可以毫不費力地實現自己的Map<String,SortedSet> ,該內部內部委托給兩個映射-一個用於基本date-> item映射,一個用於反向查找索引date-> item。 然后,您可以實現所需的所有方法(例如put,然后將條目放入兩個映射中)。

另外,請查看以下答案: Java中的雙向多值映射

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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