java中list集合的内容,如何使用像数据库中group by形式那样排序,比如:
有一个 List 他中包含了一些如下的内容
JavaBean:
name money
(名称) (金额)
来源A 100
来源B 200
来源C 300
来源B 6600
来源A 99800
最后想实现的是:如果假设这些数据在数据库中,那么通过 select name,sum(money) from Table group by name 该语句得到的List
来源A 99900
来源B 6800
来源C 300
简单的说就是让集合从 的形式 变为 的形式
请高手帮忙哦。谢谢了!
package cn.zhangao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class ListGroup {
public static void main(String[] args) {
List list = new ArrayList();
list.add(new JavaBean("来源A", 100));
list.add(new JavaBean("来源B", 200));
list.add(new JavaBean("来源C", 300));
list.add(new JavaBean("来源B", 6600));
list.add(new JavaBean("来源A", 99800));
List groupList = getListByGroup(list);
for (JavaBean bean : groupList) {
System.out.print(bean.getGroup() + "");
System.out.println(bean.getMoney());
}
}
private static List getListByGroup(List list) {
List result = new ArrayList();
Map map = new HashMap();
for (JavaBean bean : list) {
if (map.containsKey(bean.getGroup())) {
map.put(bean.getGroup(), map.get(bean.getGroup()) + bean.getMoney());
} else {
map.put(bean.getGroup(), bean.getMoney());
}
}
for (Entry entry : map.entrySet()) {
result.add(new JavaBean(entry.getKey(), entry.getValue()));
}
return result;
}
}
class JavaBean {
private String group;
private int money;
public JavaBean() {
}
public JavaBean(String group, int money) {
this.group = group;
this.money = money;
}
public String getGroup() {
return group;
}
public void setGroup(String group) {
this.group = group;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
}