List集合中的數據按照某一個屬性進行分組


有的時候,我們需要在java中對集合中的數據進行分組運算。例如:Bill對象有money(float)和type(String)屬性,現有個集合List<Bill>,需要按照Bill的type屬性進行分組,計算money的總和。有以下兩種思路:

思路一:

先計算集合中所有的type情況,然后對於每一種type去遍歷集合計算money的和。偽代碼如下:

Map<String,String> typeMap = new HashMap<String,String>();

fro (Bill bill : billList) {

typeMap.put(bill.getType,"");

}

fro(String t:typeMap.keySet) {

for (Bill bill : billList) {

 

if (bill.getType.equals(t)) {

//相應的業務處理

}

}

}

思路二:

 

[java]  view plain  copy
 
  1. public class test {    
  2.     public static void main(String[] args) {    
  3.         List<Bill> list = new ArrayList<Bill>();    
  4.         Bill b = new Bill();    
  5.         b.setType("A");    
  6.         b.setMoney(1);    
  7.         list.add(b);    
  8.         b = new Bill();    
  9.         b.setType("B");    
  10.         b.setMoney(2);    
  11.         list.add(b);    
  12.         b = new Bill();    
  13.         b.setType("C");    
  14.         b.setMoney(3);    
  15.         list.add(b);    
  16.         b = new Bill();    
  17.         b.setType("A");    
  18.         b.setMoney(1);    
  19.         list.add(b);    
  20.         b = new Bill();    
  21.         b.setType("B");    
  22.         b.setMoney(2);    
  23.         list.add(b);    
  24.         b = new Bill();    
  25.         b.setType("C");    
  26.         b.setMoney(3);    
  27.         list.add(b);    
  28.     
  29.     
  30.         List<Bill> bi = new ArrayList<Bill>();    
  31.         for (Bill bill : list) {    
  32.             boolean state = false;    
  33.             for (Bill bills : bi) {    
  34.                 if(bills.getType().equals(bill.getType())){    
  35.                     int money = bills.getMoney();    
  36.                     money += bill.getMoney();    
  37.                     bills.setMoney(money);    
  38.                     state = true;    
  39.                 }    
  40.             }    
  41.             if(!state){    
  42.                 bi.add(bill);    
  43.             }    
  44.         }    
  45.         for (Bill bill : bi) {    
  46.             System.out.println(bill.getType() +"    " +bill.getMoney());    
  47.         }    
  48.     }    
  49. }   


運行結果:

 

A    2
B    4
C    6

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM