2012-02-13 37 views
0

我有一個3變量(id(string),year(int),pay(double))對象 我創建了一個包含對象的數組列表。刪除數據和Arraylist循環

所以現在我需要總結薪酬,如果他們有相同的ID和年份,並將其存儲在一個新的數組中!那可能嗎?

ArrayList<Earning> temp = new ArrayList(); 
ArrayList<Earning> temp = new ArrayList(); 

    double tempEarning = 0.0; 
    int count = 0; 


    for (int i = 0; i < weeklyEarnings.size(); i++) { 
     Earning e = weeklyEarnings.get(i); 
     String id = e.getId(); 
     int year = e.getYear(); 
     tempEarning = e.getEarning(); 

     Earning e2 = weeklyEarnings.get(i + 1); 

     if (id.equalsIgnoreCase(e2.getId()) && year == e2.getYear()) { 
      tempEarning += e2.getEarning(); 
     } else { 
      Earning tempEarn = new Earning(); 

      tempEarn.setEarning(tempEarning); 
      tempEarn.setId(id); 
      tempEarn.setYear(year); 

      temp.add(tempEarn); 

      count++; 


      tempEarning = 0.0; 


     } 

    } 

    weeklyEarnings.clear(); 
    weeklyEarnings = temp; 
    temp.clear(); 

有人可以幫我嗎?非常感謝!

回答

0

試試這個:

 
HashMap<String, Earning> totalEarnings = new HashMap<String, Earning>(); 
for (Earning earning : weeklyEarnings) { 
    Earning tmpEarning = totalEarnings.get(earning.getId() + earning.getYear()); 
    if (tmpEarning == null) { 
     tmpEarning = new Earning(); 
     tmpEarning.setId(earning.getId()); 
     tmpEarning.setYear(earning.getYear()); 
     totalEarnings.put(earning.getId() + earning.getYear(), tmpEarning); 
    } 
    tmpEarning.setEarning(tmpEarning.getEarning() + earning.getEarning()); 
} 

for (Earning earning : totalEarnings.values()) 
{ 
    System.out.println(earning.getId() + ' ' + earning.getyear() + ' ' + earning.getEarning()); 
} 
+0

感謝您的幫助! – 2012-02-13 05:54:17

0

你可以這樣做。

  1. 遍歷整個列表。
  2. 將列表中的每個項目與一個ID進行匹配。
  3. 如果找到匹配的「總支付」。
  4. 繼續爲列表中的每個項目。
+0

可以進一步推敲,因爲我完全迷失了方向,在此!謝謝! – 2012-02-13 05:05:14