在java8的stream()里面无法使用Record对象

使用Db.find()查询出一个List<Record> find,然后我想对find用流进行分组,具体语句如下

find.parallelStream().collect(Collectors.groupingBy(Record::getStr("area"),Collectors.counting()));

我想统计每个区域的具体数量,但是这样会报一个错误,The left-hand side of an assignment must be a variable,无法使用java8的流功能


但是如果我把数据表映射成一个对象,有私有属性和get,set方法,比如 Student 对象

然后使用 Student.dao.find 查询出一个 List<Student> find,再使用stream就没有问题

find.parallelStream().collect(Collectors.groupingBy(Student::getArea,Collectors.counting()));

@波总,请问这是怎么回事


评论区

pfjia

2019-05-23 16:42

这是因为java8的方法引用不能带参数,“r->getStr("area")”这个lambda表达式不能缩写为方法引用,修改成
find.parallelStream().collect(Collectors.groupingBy(r->r.getStr("area"),Collectors.counting()));
就可以了

nommpop

2019-05-23 16:47

@pfjia 谢谢,终于可以了,帮大忙了

热门反馈

扫码入社