您的位置:首页 > 其它

List集合中的数据按照某一个属性进行分组

2017-11-28 19:09 288 查看
有的时候,我们需要在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)) {

//相应的业务处理

}

}

}

思路二:

[java] view plain copy

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐