我正在尝试对此进行排序。
{Cars=["B","Z","A"],Vegetables=["P","J","H"]}
在这里,汽车和蔬菜是关键,剩下的是各自的价值观,我们需要按价值排序。
答案应该是
{Cars=["A","B","Z"], Vegetables=["H","J","P"]}
我尝试使用比较器
List<Map.Entry<String,List<String>>> entries = new ArrayList<Map.Entry<String,List<String>>>(map.entrySet());
Collections.sort(entries, new Comparator<Map.Entry<String,List<String>>>() {
public int compare(Map.Entry<String,List<String>> l1, Map.Entry<String,List<String>> l2) {
return l1.getValue().get(0).compareTo(l2.getValue().get(0));
}
});
这不起作用,它显示了错误的答案。你能帮我么。我是收藏品的新手
答案 0 :(得分:0)
您只需要排序list<String>
而不是整个地图。
entries.stream().
forEach(stringListMap1 -> stringListMap1.values().stream().
forEach(strings -> strings.sort((o1, o2) -> o1.compareTo(o2))));
在我的工作范例之下;
List cars = Arrays.asList("B","Z","A");
List vegatable = Arrays.asList("H","J","P");
Map<String,List<String>> stringListMap = new HashMap<>();
stringListMap.put("cars",cars);
stringListMap.put("vegetables",vegatable);
List<Map<String,List<String>>> entries = new ArrayList();
entries.add(stringListMap);
entries.stream().forEach(stringListMap1 ->
stringListMap1.values().stream().forEach(strings -> strings.sort((o1, o2) -> o1.compareTo(o2))));
System.out.println(entries);
输出
[{cars=[A, B, Z], vegetables=[H, J, P]}]