How to sort array?
Before
{"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}
After
{"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}
Code
ArrayList mylist = new ArrayList();
Map mMap = new HashMap();
mMap.put("A",1);
mMap.put("B",1);
mMap.put("C",3);
mylist.add(mMap);
mMap = new HashMap();
mMap.put("A",1);
mMap.put("B",1);
mMap.put("C",2);
mylist.add(mMap);
mMap = new HashMap();
mMap.put("A",1);
mMap.put("B",11);
mMap.put("C",2);
mylist.add(mMap);
mMap = new HashMap();
mMap.put("A",1);
mMap.put("B",2);
mMap.put("C",2);
mylist.add(mMap);
mMap = new HashMap();
mMap.put("A",1);
mMap.put("B",1);
mMap.put("C",11);
mylist.add(mMap);
解决方案
Define your own comparator like this:
public class MyMapComparator implements Comparator>
{
@Override
public int compare (Map o1, Map 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"));
}
}
Then use it to sort your list:
Collections.sort (mylist, new MyComparator ());