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)
像这样定义你自己的比较器:
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)