2014-11-22 82 views
2

我想清理我的代碼,並希望在代碼中使用優化的批判。散列表與arraylist並創建新的陣列列表

目前我有這種類型的 private HashMap<String, ArrayList<allProperty>> fData;

使數據從服務器每5第二次來的HashMap中。和我更新此HashMap每5的第二個東西像這樣

 fData.put("Student", allStudent); 
     fData.put("Emp", allEmp); 
     fData.put("Other", allOther); 
從allproperty類對象

因此,有標記字段,我想提取標記字段整數的所有關鍵和創造新的ArrayList,這樣我可以每隔5秒在創建的數組列表中添加標記。

我在爲每個學生,emp和其他人使用不同的arraylist之前,它工作正常,但它好像很多重複的代碼。這就是爲什麼我想用哈希表來實現它

我想soemthing這樣,但它不是追加數據...

for (String type: allTypes) { 
      if(fData.get(type).size() > 0){ 
       arraySort(fData.get(type)); 
       temp = new ArrayList<Integer>(); 
       temp.add(fData.get(type).get(0).marks); 
      } 
      cData.put(type, temp); 

CTYPE的類型爲HashMap的下面給出和

private HashMap<String, ArrayList<Integer>> cData; 

其中allTypes是

signalTypes.add("Student"); 
    signalTypes.add("Emp"); 
    signalTypes.add("Other"); 

末我想三個新的ArrayList密鑰和一個可以每5秒追加一次數據。由於

+0

類allProperty應該有標記爲公共場... – 2014-11-22 11:05:36

+0

是它有...我可以訪問它..我知道 – user3290805 2014-11-22 11:07:01

+0

你確定使用'addAll'不會更好嗎?目前還不清楚「fData」和「marks」的類型。 – 2014-11-22 11:09:04

回答

2
  1. 讓您ArrayList

2A。如果它不存在 - 把你的new ArrayList

2b。否則使用這個ArrayList。它是可變的。所以,你可以調用這個對象上.add,它會在HashMap

更新試試這個:

for (String type: allTypes) { 
     if (fData.get(type).size() > 0) { 
      arraySort(fData.get(type)); 
      if (cData.get(type) == null) { 
       temp = new ArrayList<Integer>(); 
       temp.add(fData.get(type).get(0).marks); 
       cData.put(type, temp); 
      } else { 
       cData.get(type).add(fData.get(type).get(0).marks); 
      } 
     } 
} 
+0

,但我想我在做同樣的想法是更新每個特定於鍵 – user3290805 2014-11-22 12:08:06

+0

的列表您創建'新的ArrayList'而不是在您的代碼中使用舊的。當你使用舊的你不應該調用map.put() – 2014-11-22 12:15:05

+0

,但如果我不會創建一個新的,然後循環將運行三次,並添加三個值,而不是一個特定的鍵 – user3290805 2014-11-22 12:17:40