2012-02-13 10 views
0

私は3変数(id(string)、year(int)、pay(double))のオブジェクトを持っています オブジェクトを含むarraylistを作成しました。データとアライリストのループを取り除く

だから、彼らは同じidとyearを持っていて、それを新しい配列に格納する必要があります。それは可能ですか?

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

助けてくれてありがとう! –

0

このようにすることができます。

  1. リストを繰り返します。
  2. リスト内の各アイテムを1つのidに一致させます。
  3. "Sum Pay"と一致する場合。
  4. リストの各項目を続行します。
+0

あなたは、私は非常にこれを失っています、さらに原因を詳しく説明することができます!ありがとう! –

関連する問題