- 项目中用mybatis-plus写的SQL语句就可以实现group by分组效果,但是有时候会发现比较繁琐,所以就获取到所有数据后,用代码实现group by
public List<Amount> getListByGroup(List<Amount> list) {
List<Amount> result = new ArrayList<Amount>();
Map<String, Double> map = new HashMap<String, Double>();
for (Amount amount : list) {
if (map.containsKey(amount.getSwName())) {
map.put(amount.getSwName(), map.get(amount.getSwName()) + amount.getAmount());
} else {
map.put(amount.getSwName(), amount.getAmount());
}
}
for (Entry<String, Double> entry : map.entrySet()) {
result.add(new Amount(entry.getKey(), entry.getValue()));
}
return result;
}
- 实现思路:利用Map将第一个数据存入,然后第二个开始与已有Map的Key进行比较,遇到相同Key就将Value存入Key相加,最后返回Map即可。核心写法就是如此,剩余的业务代码请自行根据实际情况实现