使用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())

我正在尝试学习java流,为了更好地学习它,我正在尝试使用流重新编写现有代码。我正在尝试使用流媒体将列表转换为地图,如下所示

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可以帮助我们。