有的時候,咱們須要在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