java arraylist HashMap如何排序?

2me*_*ode 1 java arraylist hashmap map

如何排序数组?

之前

{"A"=1, "B"=1, "C"=3}, 
{"A"=1, "B"=1, "C"=2},
{"A"=1, "B"=11, "C"=2},
{"A"=1, "B"=2, "C"=2},
{"A"=1, "B"=1, "C"=11}
Run Code Online (Sandbox Code Playgroud)

{"A"=1, "B"=1, "C"=2},
{"A"=1, "B"=1, "C"=3},
{"A"=1, "B"=1, "C"=11},
{"A"=1, "B"=2, "C"=2}, 
{"A"=1, "B"=11, "C"=2}
Run Code Online (Sandbox Code Playgroud)

    ArrayList mylist = new ArrayList();

    Map<String,Integer> mMap = new HashMap<String,Integer>();
    mMap.put("A",1);
    mMap.put("B",1);
    mMap.put("C",3);
    mylist.add(mMap); 

    mMap = new HashMap<String,Integer>();
    mMap.put("A",1);
    mMap.put("B",1);
    mMap.put("C",2);
    mylist.add(mMap); 

    mMap = new HashMap<String,Integer>();
    mMap.put("A",1);
    mMap.put("B",11);
    mMap.put("C",2);
    mylist.add(mMap);

    mMap = new HashMap<String,Integer>();
    mMap.put("A",1);
    mMap.put("B",2);
    mMap.put("C",2);
    mylist.add(mMap);

    mMap = new HashMap<String,Integer>();
    mMap.put("A",1);
    mMap.put("B",1);
    mMap.put("C",11);       
    mylist.add(mMap);
Run Code Online (Sandbox Code Playgroud)

Mik*_*rov 8

像这样定义你自己的比较器:

public class MyMapComparator implements Comparator<Map <String, Integer>> 
{
    @Override
    public int compare (Map<String, Integer> o1, Map<String, Integer> o2) 
    {
        int c;

        c = o1.get ("A").compareTo(o2.get ("A"));
        if (c != 0) return c;

        c = o1.get ("B").compareTo(o2.get ("B"));
        if (c != 0) return c;

        return o1.get ("C").compareTo(o2.get ("C"));
    }
}
Run Code Online (Sandbox Code Playgroud)

然后用它来排序你的列表:

Collections.sort (mylist, new MyComparator ());
Run Code Online (Sandbox Code Playgroud)