關於java中對list集合中的數據按照某一個屬性進行分組

有的時候,咱們須要在java中對集合中的數據進行分組運算。java

例如:Bill對象有money(float)和type(String)屬性,現有個集合List<Bill>,須要按照Bill的type屬性進行分組,計算money的總和。有如下兩種思路:spa

思路一:code

先計算集合中全部的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)) {

//相應的業務處理

}

}

}

  

思路二:blog

public class test {  
    public static void main(String[] args) {  
        List<Bill> list = new ArrayList<Bill>();  
        Bill b = new Bill();  
        b.setType("A");  
        b.setMoney(1);  
        list.add(b);  
        b = new Bill();  
        b.setType("B");  
        b.setMoney(2);  
        list.add(b);  
        b = new Bill();  
        b.setType("C");  
        b.setMoney(3);  
        list.add(b);  
        b = new Bill();  
        b.setType("A");  
        b.setMoney(1);  
        list.add(b);  
        b = new Bill();  
        b.setType("B");  
        b.setMoney(2);  
        list.add(b);  
        b = new Bill();  
        b.setType("C");  
        b.setMoney(3);  
        list.add(b);  
  
  
        List<Bill> bi = new ArrayList<Bill>();  
        for (Bill bill : list) {  
            boolean state = false;  
            for (Bill bills : bi) {  
                if(bills.getType().equals(bill.getType())){  
                    int money = bills.getMoney();  
                    money += bill.getMoney();  
                    bills.setMoney(money);  
                    state = true;  
                }  
            }  
            if(!state){  
                bi.add(bill);  
            }  
        }  
        for (Bill bill : bi) {  
            System.out.println(bill.getType() +"    " +bill.getMoney());  
        }  
    }  
} 

運行結果:get

A    2
B    4
C    6class

相關文章
相關標籤/搜索