【发布时间】:2021-12-24 12:43:40
【问题描述】:
有一个列表(List
[
{
"name": "Wall Street",
"point" "Walls Street",
"similarity" : "0.945"
},
{
"name": "Wall Street",
"point" "Walldd Street",
"similarity" : "0.871
},
{
"name": "Duck Street",
"point" "Ducks duck",
"similarity" : "0.765
},
{
"name": "Duck Street",
"point" "yelow duck",
"similarity" : "0.563
}
...
]
如何过滤列表,通过name得到最高的similarity映射组,然后使用Java Stream组合成列表?
结果示例为:
[
{
"name": "Wall Street",
"point" "Walls Street",
"similarity" : 0.945
},
{
"name": "Duck Street",
"point" "Ducks duck",
"similarity" : 0.765
}
...
]
ps:如果多张地图中有相同的similarity值,请将它们都保留在列表中。
初始代码:
List<HashMap<String, String>> res = new ArrayList<>();
HashMap<String, String> map1 = new HashMap<>();
map1.put("name", "Wall Street");
map1.put("point", "Walls Street");
map1.put("similarity", "0.945");
HashMap<String, String> map2 = new HashMap<>();
map2.put("name", "Wall Street");
map2.put("point", "Walldd Street");
map2.put("similarity", "0.871");
HashMap<String, String> map3 = new HashMap<>();
map3.put("name", "Duck Street");
map3.put("point", "Ducks duck");
map3.put("similarity", "0.765");
HashMap<String, String> map4 = new HashMap<>();
map4.put("name", "Duck Street");
map4.put("point", "yelow duck");
map4.put("similarity", "0.563");
res.add(map1);
res.add(map2);
res.add(map3);
res.add(map4);
【问题讨论】:
标签: java java-stream