Abh*_*oda 4 java java-8 java-stream
我正在尝试对列表进行排序,然后对元素进行分组。问题是,当我对元素进行分组时,排序顺序会被折腾。下面是我的一段代码
listOfRooms.stream().sorted(Comparator.comparing(DXARoom::getStayAverageRate))
.collect(Collectors.groupingBy(DXARoom::getRoomInfoLabel));
Run Code Online (Sandbox Code Playgroud)
这就是我上面代码的输出方式
{
"Presidential suite": [
{
"roomInfoLabel": "Presidential suite",
"stayAverageRate": "1696.0",
},
{
"roomInfoLabel": "Presidential suite",
"stayAverageRate": "1729.0",
},
"Premier king room": [
{
"roomInfoLabel": "Premier king room",
"stayAverageRate": "370.0",
},
{
"roomInfoLabel": "Premier king room",
"stayAverageRate": "377.0",
},
}
Run Code Online (Sandbox Code Playgroud)
基本上,我的要求是先显示最便宜的房型。因此,输出应首先按 Premier 大床房分组,因为它有 370 英镑的最便宜的房间。
预期输出->
{
"Premier king room": [
{
"roomInfoLabel": "Premier king room",
"stayAverageRate": "370.0",
},
{
"roomInfoLabel": "Premier king room",
"stayAverageRate": "377.0",
},
"Presidential suite": [
{
"roomInfoLabel": "Presidential suite",
"stayAverageRate": "1696.0",
},
{
"roomInfoLabel": "Presidential suite",
"stayAverageRate": "1729.0",
}
}
Run Code Online (Sandbox Code Playgroud)
您能否建议我任何替代方法或上述实现有什么问题,欢迎任何新想法。
这个解决方案对我有用
.sorted(Comparator.comparing(DXARoom::getStayAverageRate))
.collect(Collectors.groupingBy(DXARoom::getRateInfoLabel, LinkedHashMap::new, Collectors.toList()));
Run Code Online (Sandbox Code Playgroud)
基本上首先,
谢谢@霍尔格
看来您正在寻找这个:
Collectors.groupingBy(
DXARoom::getRoomInfoLabel,
LinkedHashMap::new,
Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5923 次 |
| 最近记录: |