使用java流时更改映射键数据类型
我正在尝试学习java流,为了更好地学习它,我正在尝试使用流重新编写现有代码。我正在尝试使用流媒体将列表转换为地图,如下所示使用java流时更改映射键数据类型,java,java-stream,Java,Java Stream,我正在尝试学习java流,为了更好地学习它,我正在尝试使用流重新编写现有代码。我正在尝试使用流媒体将列表转换为地图,如下所示 private Map<String, List<Details>> someMethod( Request request) { return Optional.ofNullable(request) .map(request -> ((Parent) request.getProduct())
private Map<String, List<Details>> someMethod(
Request request) {
return Optional.ofNullable(request)
.map(request -> ((Parent) request.getProduct()).getItin())
.map(itin -> itin.getDetailsList())
.stream()
.flatMap(Collection::stream)
.collect(Collectors.toMap(Details::getId,details->details));
}
私有映射方法(
请求(请求){
返回可选。不可用(请求)
.map(请求->((父)请求.getProduct()).getItin())
.map(itin->itin.getDetailsList())
.stream()
.flatMap(集合::流)
.collect(Collectors.toMap(Details::getId,Details->Details));
}
我想用Key作为字符串构建一个映射,但Details::getId是整数。如何将其转换为字符串?这里很可能需要使用collector.grouping By,而不是
toMap
:
return可选。不可用(请求)
.map(请求->((父)请求.getProduct()).getItin())
.map(itin->itin.getDetailsList())
.stream()
.flatMap(集合::流)
.collect(Collectors.groupingBy(d->Integer.toString(d.getId()));//该值将显示在列表中
Collectors.toMap(d->Integer.toString(d.getId()),details->details)
还不够吗?我尝试了这个方法,但找不到getId()A可以帮助我们。