Collections.sort多列排序
我进行排序时结果只对ID列进行排序,而不对TYPE进行排序,我想要的结果是先按TYPE进行排序,然后在对TYPE进行排序的基础上在按ID进行排序.也就是实现多列排序.请问我下面这段代码应该怎么修改以实现多列排序?
package collectionssort;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TestSort {
public static void main(String args[]){
List aList = new ArrayList();
for(int i=0;i<3;i++){
Map aMap = new HashMap();
aMap.put("ID","0"+(i+1));
aMap.put("TYPE","ABC"+i);
aList.add(aMap);
}
for(int i=0;i<3;i++){
Map aMap = new HashMap();
aMap.put("ID","0"+(i+1));
aMap.put("TYPE","EFG"+i);
aList.add(aMap);
}
for(int i=0;i<3;i++){
Map aMap = new HashMap();
aMap.put("ID","0"+(i+1));
aMap.put("TYPE","ABD"+i);
aList.add(aMap);
}
for(int i=0;i<9;i++){
System.out.println(aList.get(i));
}
Collections.sort(aList,new MyComparator());
System.out.println("排序后的数据为:");
for(int i=0;i<9;i++){
System.out.println(aList.get(i));
}
}
}
class MyComparator implements Comparator{
public MyComparator(){
super();
}
public int compare(Object o1, Object o2) {
Map mapA =(Map)o1;
Map mapB =(Map)o2;
String idA=(String)mapA.get("ID");
String idB=(String)mapB.get("ID");
return idA.compareTo(idB);
}
}