ric*_*ich 3 java lambda java-8 java-stream
我目前有一个方法,看起来像:
public Map<Long, List<ReferralDetailsDTO>> getWaiting() {
return referralDao.findAll()
.stream()
.map(ReferralDetailsDTO::new)
.collect(Collectors.groupingBy(ReferralDetailsDTO::getLocationId, Collectors.toList()));
}
}
Run Code Online (Sandbox Code Playgroud)
它返回一个位置ID的Map到ReferralDetailsDTO对象.但是,我想换掉LocationDTO对象的位置ID.
我天真想象这样的事情可能有用:
public Map<Long, List<ReferralDetailsDTO>> getWaiting() {
return referralDao.findAll()
.stream()
.map(ReferralDetailsDTO::new)
.collect(Collectors.groupingBy(locationDao.findById(ReferralDetailsDTO::getLocationId), Collectors.toList()));
}
Run Code Online (Sandbox Code Playgroud)
显然,我在这里是因为它没有--Java抱怨findById方法期望Long值,而不是方法引用.有关我如何能够巧妙地解决这个问题的任何建议?提前致谢.
首先,将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()));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |