簡體   English   中英

將值分配給地圖(哈希圖或多圖)

[英]Assigning values to Map (Hashmap or Multimap)

我有一張地圖:

HashMap<String, ArrayList<Integer>> hashmap = new HashMap<String, ArrayList<Integer>>();

從遠程數據庫服務器檢索數據后,我正在創建一個hashmap :(在eclipse中輸出)

{newcomer=[23, 78, 118, 155, 240, 244], zoom=[213], profession=[8, 10, 12, 13, 15]}

現在,我擔心的是,連接服務器和下載數據花費了太多時間。 數據大小超出了我的耐心范圍。 有什么辦法,我可以將值直接存儲在Hashmap變量中(就像我們對普通變量所做的那樣,int i = 5);

通常,我該如何做(就像我在Python中一樣):

hashmap = {newcomer=[23, 78, 118, 155, 240, 244], zoom=[213], profession=[8, 10, 12, 13, 15]}

我最近切換到了番石榴,我也可以做這個Multimap嗎? 我現在想分配的值是一個字符串,因此分配可能比我想的要復雜得多。

編輯1 :我只需要出於開發目的。 應用程序上線后,將重新連接到數據庫服務器。

編輯2 :目前我有將近50k對,因此不能單獨添加。 可能,為了發展,我可以將清單縮小到100個項目,但是要逐個列出每個項目也需要人工。

編輯3 :我知道我們可以通過某種方式找出更完美的數據庫來快速執行。 我只需要弄清楚是否可以分配? 否則,我要進行本地設置。

Java無法進行Map的內聯初始化。 但是,對於您而言,這並不重要-隨着數據量的增加,您通過代碼填充“地圖”要么意味着數小時(或數天)的高度重復且極易出錯的手動輸入,要么編寫了代碼生成器:

我目前有將近5萬對,因此不能單獨添加。

而且,無論如何,如果您編寫代碼生成器,則生成一個內聯初始化程序或加載Map#put()語句都沒關系。

但是,無論如何在這種情況下,代碼的生成/初始化當然是一個錯誤的選擇。 更好的解決方案將是(按使用率遞減排序):

  • 請注意您緩慢的數據庫設置或未優化的查詢(請參閱CBass對原始問題的評論)。
  • 注意只加載一次數據,使延遲與全局無關。
  • 從DB服務器讀取一次,然后將其序列化為文件(請參見ObjectOutputStream ),然后從那里反序列化。
  • 您可以設置本地(快速)數據庫服務器,然后從中讀取而不是遠程數據庫服務器。

除非證明上述所有內容無效,否則我什至不會考慮在代碼中初始化這種大小的數據結構。 這是極不可能的。

暫無
暫無

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

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