天天看點

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)) {

//相應的業務處理

思路二:

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);    

        b.setType("C");    

        b.setMoney(3);    

        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());    

    }    

}   

運作結果:

A    2

B    4

C    6