我有一张地图,想有一个整数而不是双精度数,但我似乎无法将其转换。我的问题似乎是“ averagingInt”部分。我得到正确的值,我只想四舍五入。预先谢谢你。
public Map<String,Integer> executeSQL14(){
return records.stream()
.filter(p->p.getSource().equals("a") || p.getSource().equals("b"))
.filter(p->p.getDestination().equals("f") || p.getDestination().equals("h"))
.filter(p->p.getExtendedSecurityCheck().equals("n"))
.collect(Collectors.groupingBy(Record::getDestination, Collectors.averagingInt(Record::getWeight)));
}
答案 0 :(得分:1)
您可以将替代项toMap
用作:
public Map<String,Integer> executeSQL14(List<Record> records) {
return records.stream()
.filter(p -> p.getSource().equals("a") || p.getSource().equals("b"))
.filter(p -> p.getDestination().equals("f") || p.getDestination().equals("h"))
.filter(p -> p.getExtendedSecurityCheck().equals("n"))
.collect(Collectors.toMap(Record::getDestination, Record::getWeight, (a, b) -> (a + b) / 2));
}
或可能使用collectingAndThen
执行其他精加工操作,如下:
public Map<String,Integer> executeSQL14(List<Record> records) {
return records.stream()
.filter(p -> p.getSource().equals("a") || p.getSource().equals("b"))
.filter(p -> p.getDestination().equals("f") || p.getDestination().equals("h"))
.filter(p -> p.getExtendedSecurityCheck().equals("n"))
.collect(Collectors.groupingBy(Record::getDestination,
Collectors.collectingAndThen(Collectors.averagingInt(Record::getWeight), Double::intValue)));
}