Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于地图列表中键的值比较_Java_Comparator - Fatal编程技术网

Java 基于地图列表中键的值比较

Java 基于地图列表中键的值比较,java,comparator,Java,Comparator,我有一个字符串到字符串的映射,我想根据kayF的值对映射进行排序,但是我的代码没有这样做。请告知 Map<String, String> h = null; Map<String, String> h1 = null; Map<String, String> h2 = null; listSummaryMap = new ArrayList<Map<String, String>>(); h =

我有一个字符串到字符串的映射,我想根据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"));
        }
    });
Map h=null;
Map h1=null;
Map h2=null;
listSummaryMap=newArrayList();
h=新的HashMap();
h、 卖出(“成功”,“27”);
h、 出售(“TOTAL_HOTELS”、“86”);
h、 认沽权(“F”、“86”);
h、 put(“预订模式”、“86”);
h、 出售(“合伙人名称”、“86”);
h1=新的HashMap();
h1.put(“成功”、“27”);
h1.put(“TOTAL_HOTELS”,“86”);
h1.投入(“F”,“36”);
h1.put(“预约模式”、“86”);
h1.投入(“合伙人名称”、“86”);
h2=新的HashMap();
h2.认沽期权(“成功”、“27”);
h2.put(“道达尔酒店”、“86”);
h2.认沽权(“F”、“28”);
h2.put(“保留模式”、“86”);
h2.出售(“合伙人名称”、“86”);
listSummaryMap.add(h);
listSummaryMap.add(h1);
listSummaryMap.add(h2);
排序(listSummaryMap,新的Comparator(){
@凌驾
公共整数比较(映射o1,映射o2){
返回o2.get(“F”)。与(o1.get(“F”))进行比较;
}
});

字符串
s转换为
整数
s,并作为
整数
s进行比较:

    public int compare(Map<String, String> o1, Map<String, String> o2) {
        return Integer.valueOf(o2.get("F")).compareTo(Integer.valueOf(o1.get("F")));
    }
公共整数比较(映射o1,映射o2){
返回Integer.valueOf(o2.get(“F”)).compareTo(Integer.valueOf(o1.get(“F”));
}
这是假设
“F”
键始终存在于
映射
s中,并且其值始终可以解析为
整数


顺便说一句,我看不到您将
Map
s添加到
listSummaryMap
的位置。您忘记在问题中包含该代码了吗?

首先需要将字符串转换为整数,然后比较将按如下方式工作

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);
            }
        });
Collections.sort(listSummaryMap,new Comparator(){
@凌驾
公共整数比较(映射o1,映射o2){
整数a=Integer.parseInt(o2.get(“F”));
整数b=Integer.parseInt(o1.get(“F”));
返回b.compareTo(a);
}
});

您忘记将地图添加到列表中,并且地图h3从未初始化。拆开你的代码已经按原样工作了,但是将映射从最高id排序到最低id。如果您将比较行更改为:

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"));
    }
});
Collections.sort(listSummaryMap,new Comparator(){
@凌驾
公共整数比较(映射o1,映射o2){
返回o1.get(“F”)。与(o2.get(“F”))进行比较;
}
});
然后它将按“F”从最低值到最高值对地图进行排序


希望它对Collections.addAll(listSummaryMap,h,h1,h2)有所帮助创建完所有地图后。感谢Jekin Kalariya、Eran和所有人