java集合list中的数据按照多个属性分组
如果按照一个属性分组,请参照下面的文章:http://blog.csdn.net/liuxiao723846/article/details/46518553
如果按照多个属性对集合中的数据进行分组,需要把分组字段拼接起来联合比较,代码如下:
import java.util.ArrayList; import java.util.List; public class MergeList1 { /** * @param args */ public static void main(String[] args) { List<Bill> list = new ArrayList<Bill>(); Bill b = new Bill(); b.setType("A"); b.setMoney(1); b.setState("中"); list.add(b); b = new Bill(); b.setType("B"); b.setState("大"); b.setMoney(2); list.add(b); b = new Bill(); b.setType("C"); b.setMoney(3); b.setState("大"); list.add(b); b = new Bill(); b.setType("A"); b.setMoney(2); b.setState("大"); list.add(b); b = new Bill(); b.setType("B"); b.setMoney(2); b.setState("中"); list.add(b); b = new Bill(); b.setType("C"); b.setMoney(3); b.setState("大"); list.add(b); b = new Bill(); b.setType("A"); b.setMoney(1); b.setState("中"); list.add(b); b = new Bill(); b.setType("B"); b.setState("中"); b.setMoney(2); list.add(b); b = new Bill(); b.setType("C"); b.setState("大"); b.setMoney(3); list.add(b); b = new Bill(); b.setType("C"); b.setState("大"); b.setMoney(1); list.add(b); List<Bill> bi = new ArrayList<Bill>(); for (Bill bill : list) { boolean flag = false; String a1 = bill.getType()+","+bill.getState(); for (Bill bills : bi) { String a2 = bills.getType()+","+bills.getState(); if(a1.equals(a2)){ int money = bills.getMoney(); money += bill.getMoney(); bills.setMoney(money); flag = true; } } if(!flag){ bi.add(bill); } } for (Bill bill : bi) { System.out.println(bill.getType() +" " +bill.getState()+" "+bill.getMoney()); } } } class Bill { private String type; private String state; private Integer money; public String getType() { return type; } public void setType(String type) { this.type = type; } public String getState() { return state; } public void setState(String state) { this.state = state; } public Integer getMoney() { return money; } public void setMoney(Integer money) { this.money = money; } }运行结果:
A 中 2
B 大 2
C 大 10
A 大 2
B 中 4
参考博客:http://deeplyloving.iteye.com/blog/1844673
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: java 将list按照指定数量分成小list
- 下一篇: 负载均衡之IP