有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (2) 个答案

  1. # 2 楼答案

    实际上,您无法(正确、可靠地)按值对Map实现进行排序。(你可能会看到声称不这样做的实现是黑客式的、不可靠的,而且行为非常怪异,拒绝重复的值,在尝试查看不在映射中的键时抛出异常,如果备份映射发生更改,则会导致无法恢复的损坏…)

    而是显式地对条目列表进行排序:

    List<Map.Entry<Integer, Float>> list = new ArrayList<>(map.entrySet());
    Collections.sort(list, new Comparator<Map.Entry<Integer, Float>>() {
      public int compare(Map.Entry<Integer, Float> e1, Map.Entry<Integer, Float> e2){
        return e1.getValue().compareTo(e2.getValue());
      }
    });
    

    如果你喜欢,你可以把它放到LinkedHashMap

    Map<Integer, Float> sortedMap = new LinkedHashMap<Integer, Float>();
    for (Map.Entry<Integer, Float> entry : list) {
      sortedMap.put(entry.getKey(), entry.getValue());
    }