根据ID键对Hashmap的链表进行排序

时间:2018-03-15 05:54:11

标签: java hashmap comparator

我将链接列表中存储的HashMap需要按降序对它们进行排序。下面给出了我的代码

            import java.util.ArrayList;
            import java.util.Comparator;
            import java.util.HashMap;
            import java.util.LinkedList;

            public class Test {


    public static void main(String[] args) {
        LinkedList<HashMap<String,String>> list=new LinkedList<HashMap<String,String>>();

     HashMap<String,String> map=new HashMap<>();
    map.put("id","2");
    map.put("code","200");
    HashMap<String,String> map2=new HashMap<>();
    map2.put("id","1");
    map2.put("code","100");
    HashMap<String,String> map3=new HashMap<>();
    map3.put("id","3");
    map3.put("code","300");
    list.add(map);
    list.add(map2);
    list.add(map3);
    System.out.println("List is::"+list);

    list.sort(Comparator.comparingInt(m -> Integer.parseInt(m.get("id"))));
    System.out.println("list after sorting is::"+list);


    }
}

我想要一个降序的链表,如下所示

            map 3,map, map 2

2 个答案:

答案 0 :(得分:0)

您可以使用TreeMap并在其构造函数中指定比较器。这是地图。但是,如果要对哈希映射的链接列表进行排序,可以使用Collections.sort(list,comparator)。 但这只是残酷......

答案 1 :(得分:0)

  

Comparator.comparingInt(m - &gt; Integer.parseInt(m.get(&#34; id&#34;))

您必须切换订单。

 list.sort((firstMap, secondMap) -> Integer.valueOf(secondMap.get("id"))
            .compareTo(Integer.valueOf(firstMap.get("id"))));