2016-07-19 43 views
-1
HashMap<String, Object> merchantDetailMap = new HashMap<String, Object>();  
      if(dataAndSize != null) 
      { 
       ResultList<VoltMerchantDetail> tempMerchantList = (ResultList<VoltMerchantDetail>) dataAndSize.get("VoltDBDataList"); 
       vMerchantList = (List<VoltMerchantDetail>) tempMerchantList; 
       for(VoltMerchantDetail vMerchant : vMerchantList){ 
        HashMap<String, Object> merchantDetails = new HashMap<String, Object>(); 
        merchantDetails.put("toActorMsisdn", vMerchant.getToActorMsisdn()); 
        merchantDetails.put("fromActorMsisdn", vMerchant.getFromActorMsisdn()); 
        merchantDetails.put("customCol1", vMerchant.getCustomCol1()); 
        merchantDetails.put("customCol2", vMerchant.getCustomCol2()); 
        merchantDetails.put("customCol3", vMerchant.getCustomCol3()); 
        merchantDetails.put("customCol4", vMerchant.getCustomCol4()); 
        merchantDetails.put("customCol5", vMerchant.getCustomCol5());    
        merchantDetailMap.put(vMerchant.getMerUsername(),merchantDetails); 
       } 

值(vMerchant.getMerUsername())是像= paPzG+jjzRss4s1frqGKrA==Puting數據花費過多時間關鍵的

問題是一些時間它需要太多的時間(10 - 15分鐘,以把元件在它)或甚至在放置期間掛起。

有什麼可問題

+0

有多少個元素? – Holger

+0

爲什麼要投票?請原諒。 –

+1

將值放入哈希映射通常非常快 - 提供了一個快速的'hashCode'方法。你的代碼片段顯示了一些調用來檢索一些數據。也許這些是耗時的行爲? – Seelenvirtuose

回答

3

我建議你使用一個Java剖析,看看是把所有的時間。

對我來說,創建〜20個hashmaps並有7個條目並將它們添加到另一個hashmap需要10到15分鐘是不合情理的。真正的問題更可能是別的東西;例如:

  • 考慮創建​​花費很長的時間查詢,
  • 的​​有,你認爲還有更多的條目,或
  • 堆很滿,而GC是試圖回收空間的最後一次反覆運行。

對於什麼是值得的,如果你換成使用7個命名字段和7個getter和/或setter方法簡單的Java類來表示merchantDetails的HashMap,然後加載過程會更快,並且加載的地圖將佔用較少的內存。