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