废话不多说,上代码
public class Message {
private String title;
private String no;
private int amount;
private int month;
public Message(String title, String no, int amount, int month) {
this.title = title;
this.no = no;
this.amount = amount;
this.month = month;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
@Override
public String toString() {
return "Message{" +
"title='" + title + '\'' +
", no=" + no +
", amount=" + amount +
", month=" + month +
'}';
}
}
public static void main(String[] args) {
List<Message> messages = new ArrayList<Message>();
messages.add(new Message("嘿嘿", "1433223", 34234, 1));
messages.add(new Message("嘿嘿", "1433223", 42344, 2));
messages.add(new Message("嘿嘿", "1433223", 34242, 3));
messages.add(new Message("嘿嘿", "1433223", 78675, 4));
messages.add(new Message("嘿嘿", "1433223", 86766, 5));
messages.add(new Message("嘿嘿", "1433223", 54567, 6));
messages.add(new Message("嘿嘿", "1433223", 87575, 7));
messages.add(new Message("嘿嘿", "1433223", 56756, 8));
messages.add(new Message("嘿嘿", "1433223", 98770, 9));
messages.add(new Message("嘿嘿", "1433223", 45455, 10));
messages.add(new Message("嘿嘿", "1433223", 67567, 11));
messages.add(new Message("嘿嘿", "1433223", 56475, 12));
messages.add(new Message("哈哈", "1234567", 64543, 1));
messages.add(new Message("哈哈", "1234567", 76578, 2));
messages.add(new Message("哈哈", "1234567", 76656, 3));
messages.add(new Message("哈哈", "1234567", 67787, 4));
messages.add(new Message("哈哈", "1234567", 95664, 5));
messages.add(new Message("哈哈", "1234567", 56567, 6));
messages.add(new Message("哈哈", "1234567", 75663, 7));
messages.add(new Message("哈哈", "1234567", 34564, 8));
messages.add(new Message("哈哈", "1234567", 87645, 9));
messages.add(new Message("哈哈", "1234567", 23543, 10));
messages.add(new Message("哈哈", "1234567", 56453, 11));
messages.add(new Message("哈哈", "1234567", 53464, 12));
// Map<String,List<Message>> stringListMap = messages.stream().collect(Collectors.groupingBy(Message::getNo));
//根据no分组
Map<String,List<Message>> resultMap =messages.stream().collect(Collectors.groupingBy(Message::getNo));;
List<Map<String, Object>> result = new ArrayList<>();
resultMap.entrySet().stream().forEach(entry ->{
Map<String, Object> dataMap = new HashMap<>();
String arr [] =entry.getKey().split("-");
List<Message> list_one = entry.getValue();
dataMap.put("no",arr[0]);
//求和
int total= list_one.stream().collect(Collectors.summingInt(o->Integer.parseInt(String.valueOf(o.getAmount()))));
dataMap.put("total",total);
result.add(dataMap);
} );
System.out.println(result);
}