代码之家  ›  专栏  ›  技术社区  ›  Shubham Pathak

基于地图索引表的值比较

  •  1
  • Shubham Pathak  · 技术社区  · 9 年前

    我有一个字符串到字符串的映射,我想对 地图 基于他们对kay的价值 F ,但我的代码无法执行此操作。请告知。

        Map<String, String> h = null;
        Map<String, String> h1 = null;
        Map<String, String> h2 = null;
        listSummaryMap = new ArrayList<Map<String, String>>();
    
        h = new HashMap<String, String>();
        h.put("SUCCESS", "27");
        h.put("TOTAL_HOTELS", "86");
        h.put("F", "86");
        h.put("RESERVATION_MODE", "86");
        h.put("PARTNER_NAME", "86");
    
        h1 = new HashMap<String, String>();
        h1.put("SUCCESS", "27");
        h1.put("TOTAL_HOTELS", "86");
        h1.put("F", "36");
        h1.put("RESERVATION_MODE", "86");
        h1.put("PARTNER_NAME", "86");
    
        h2 = new HashMap<String, String>();
        h2.put("SUCCESS", "27");
        h2.put("TOTAL_HOTELS", "86");
        h2.put("F", "28");
        h2.put("RESERVATION_MODE", "86");
        h2.put("PARTNER_NAME", "86");
    
        listSummaryMap .add(h);
        listSummaryMap .add(h1);
        listSummaryMap .add(h2);
    
    
        Collections.sort(listSummaryMap , new Comparator<Map<String, String>>() {
            @Override
            public int compare(Map<String, String> o1, Map<String, String> o2) {
                return o2.get("F").compareTo(o1.get("F"));
            }
        });
    
    3 回复  |  直到 9 年前
        1
  •  2
  •   Eran    9 年前

    转换 String s至 Integer 秒:

        public int compare(Map<String, String> o1, Map<String, String> o2) {
            return Integer.valueOf(o2.get("F")).compareTo(Integer.valueOf(o1.get("F")));
        }
    

    这是假设 "F" 键始终存在于 Map s、 其值始终可以解析为 整数 .

    地图 s至 listSummaryMap 。你忘了在你的问题中包含该代码了吗?

        2
  •  0
  •   Jekin Kalariya    9 年前

    需要先将String转换为整数,然后再进行比较。

    Collections.sort(listSummaryMap , new Comparator<Map<String, String>>() {
                @Override
                public int compare(Map<String, String> o1, Map<String, String> o2) {
                    Integer a=Integer.parseInt(o2.get("F"));
                    Integer b=Integer.parseInt(o1.get("F"));
                    return b.compareTo(a);
                }
            });
    
        3
  •  0
  •   CodingNagger    9 年前

    Collections.sort(listSummaryMap , new Comparator<Map<String, String>>() {
        @Override
        public int compare(Map<String, String> o1, Map<String, String> o2) {
            return o1.get("F").compareTo(o2.get("F"));
        }
    });
    

    然后,它将按“F”从最低值到最高值对地图进行排序。

    希望能有所帮助