我现在有一个看起来像这样的方法:
OutputDir
它向ReferralDetailsDTO对象返回一个位置ID的Map。但是,我想换掉LocationDTO对象的位置ID。
我天真地想象过这样的事情可能有用:
public Map<Long, List<ReferralDetailsDTO>> getWaiting() {
return referralDao.findAll()
.stream()
.map(ReferralDetailsDTO::new)
.collect(Collectors.groupingBy(ReferralDetailsDTO::getLocationId, Collectors.toList()));
}
}
显然,我在这里是因为它没有--Java抱怨findById方法期望Long值,而不是方法引用。有关我如何能够巧妙地解决这个问题的任何建议?提前谢谢。
答案 0 :(得分:5)
首先,将Map的密钥类型从Long更改为相关类(是LocationDTO
还是其他类?)
其次,对查找使用lambda表达式而不是方法引用:
public Map<LocationDTO, List<ReferralDetailsDTO>> getWaiting() {
return referralDao.findAll()
.stream()
.map(ReferralDetailsDTO::new)
.collect(Collectors.groupingBy(r -> locationDao.findById(r.getLocationId()));
}