有的時候,我們需要在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);
- 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());
- }
- }
- }
運行結果:
A 2
B 4
C 6