Map<String, TrCardInfoGatherExtTemp> reportEsDTOMap = trCardInfoGatherExtTemps.stream() .collect(Collectors.toMap(subCardInfo -> subCardInfo.getDevId() + subCardInfo.getSlot() + subCardInfo.getSubSlot(), subCardInfo -> subCardInfo)); 这段代码改为map的key由前两个参数组成,map的value是list对象
时间: 2024-03-17 11:39:52 浏览: 133
关于map的 一个key对应多个value
可以使用`Collectors.groupingBy()`方法来实现按照key分组的功能,将每个key对应的value存放在一个List中:
```
Map<String, List<TrCardInfoGatherExtTemp>> reportEsDTOMap = trCardInfoGatherExtTemps.stream()
.collect(Collectors.groupingBy(subCardInfo -> subCardInfo.getDevId() + subCardInfo.getSlot()));
```
这样就能够实现将前两个参数组成的key对应的value存放在一个List中了。如果需要将List中的元素按照第三个参数进行排序,可以在`groupingBy()`方法中传入一个排序函数,例如:
```
Map<String, List<TrCardInfoGatherExtTemp>> reportEsDTOMap = trCardInfoGatherExtTemps.stream()
.collect(Collectors.groupingBy(subCardInfo -> subCardInfo.getDevId() + subCardInfo.getSlot(),
Collectors.mapping(subCardInfo -> subCardInfo, Collectors.toList())));
```
其中`Collectors.mapping()`方法可以将每个元素映射为它自己,这样就能够得到一个List了。
阅读全文