67,550
社区成员




String json = "[{\"a\":\"1\",\"b\":\"2\",\"c\":\"3\"},{\"a\":\"2\",\"b\":\"4\",\"c\":\"5\"},,{\"a\":\"1\",\"b\":\"4\",\"c\":\"5\"}]";
List<HashMap> list = JSON.parseArray(json, HashMap.class);
Map<String, HashMap> collect = list.stream()
.collect(
Collectors.groupingBy(
new Function<HashMap, String>() {
@Override
public String apply(HashMap map) {
return (String) map.get("a");
}
},
Collectors.reducing(new HashMap<>(), new BinaryOperator<HashMap>() {
@Override
public HashMap apply(HashMap t, HashMap t2) {
if (t.get("a") == null) {
t = t2;
} else {
t.put("b", (Integer.valueOf((String) t.get("b")) * Integer.valueOf((String) t2.get("b"))) / 2);
t.put("c", (Integer.valueOf((String) t.get("c")) * Integer.valueOf((String) t2.get("c"))) / 2);
}
return t;
}
}))
);