簡體   English   中英

更好地選擇精細的數據結構以從長列表中選擇隨機鍵值[HashMap,LinkedHashMap和ConcurrentHashMap]

[英]Better approch to choose fine data structure for picking random key value from a long list [HashMap,LinkedHashMap and ConcurrentHashMap]

語言 :Java
項目類型 :Web(戰爭應用程序)
要求 :根據區域,我們需要顯示數據庫中的字符串文字。

描述 :-我們有一些特定於語言的數據庫表,其中已將字符串文字映射為鍵值對。

E.g. I) - like for en_US, Table Name: - StringLiteral_en_US 
----------------------------------------------------
 Key                |    Value
 Customer_Name      |     ABC
 Address            |     XYZ

 Values will be continued....around 2000

 E.g. II) - like for en_GB, Table Name: - StringLiteral_en_GB
 ----------------------------------------------------
Key                |    Value
Customer_Name      |     ABC  
Address            |     XYZ  

Values will be continued....around 2000

表已正確維護,我們正在從數據庫中獲取所有鍵值並將其存儲到數據結構中(到現在為止,我們選擇了LinkedHashMap)

問題 :-

我們很難選擇最佳的數據結構來存儲價值和更快地獲取價值。 因為我們將隨機獲取。 無論需要什么密鑰,我們都將獲取該特定密鑰。

因此,我們需要保持程序的效率,以便每當鍵/值增加時。 隨機訪問任何密鑰都不會有任何影響。

要求 :-

請建議我們選擇可以提高產品生產率的數據結構。

所有的建議將不勝感激。

沒有辦法選擇一個。 您尚未提供有關所需性能或所獲得性能的任何度量。

注意:創建String鍵比大多數時間查找地圖要昂貴。

我建議您使用最簡單的實現,在這種情況下,很可能是HashMap。 如果使用LinkedHashMap,則可以看到添加元素的順序,這可能會很有用。

由於您這樣做是為了國際化,並且您關心“產品生產率”,因此我將嘗試以某種方式將這些數據放入資源束中 就是為了這個目的。

如果正確設置,它將使面向客戶的代碼更易於實現。 例如,正確設置資源束后,就可以用jsp編寫此代碼,它將知道如何選擇寫入值: <h3><fmt:message key="Choose"/></h3> 如果沒有資源包,則必須手工編寫自己的流控制邏輯。 那將是乏味和越野車。

即使您沒有使用jsps,您的Web框架也可能知道如何處理ResourceBundles。 如果您將其放在幼稚的數據結構中,則您的Web框架可能會不知道如何使用它。

這是有關如何使用數據庫加載資源包的教程。

如果純粹是為了國際化,那么我對Entry的插入順序沒有什么意義。 所以,我要說NOLinkedHashMap

在初始化期間將加載ResourceBundle或這些屬性。 除非有一個運行時重新加載和各種螺紋打得贏 ConcurrentHashMap以及

HashMap檢索速度很快,並且是潛在的候選者。

如果您想創建引用,那么WeakHashMap很適合研究

如果存在一對一的鍵/值映射,並且您想反向查找,請嘗試Bimap

暫無
暫無

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

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