package test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class MyTest4{
/**
* 排序
*/
//声明三个全局变量
static List<Map<String,Object>> list=new ArrayList<Map<String, Object>>();
static String name;
static int age;
public static void main(String[] args) {
//str为age时,按年龄进行排序;str为name时,按姓名进行排序。
String str="name";
mysort(str);//调用mysort方法
}
//进行排序
public static void mysort(final String str){
//声明三个map集合并往其中放值
Map<String,Object> map1= new LinkedHashMap<String, Object>();
name="zhangsan";age=10;
map1.put("name", name);
map1.put("age", age);
Map<String,Object> map2= new LinkedHashMap<String, Object>();
name="wangwu";age=3;
map2.put("name", name);
map2.put("age", age);
Map<String,Object> map3= new LinkedHashMap<String, Object>();
name="lisi";age=20;
map3.put("name",name);
map3.put("age", age);
//给list赋值
list.add(map1);
list.add(map2);
list.add(map3);
//运用Collections的sort排序方法
Collections.sort(list, new Comparator<Map<String, Object>>() {
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
Integer name1=0;
Integer name2=0;
if("name".equals(str)){
String a=o1.get("name").toString();
String b=o2.get("name").toString();
name1 = Integer.valueOf(a.charAt(0)) ;//name1是从你list里面拿出来的一个
name2 = Integer.valueOf(b.charAt(0)) ; //name2是从你list里面拿出来的第二个name
}else if("age".equals(str)){
Integer a=(Integer) o1.get("age");
Integer b=(Integer) o2.get("age");
name1 = Integer.valueOf(a) ;//name1是从你list里面拿出来的一个
name2 = Integer.valueOf(b) ; //name2是从你list里面拿出来的第二个name
}
return name1.compareTo(name2);
}
});
System.out.println( list.toString());
}
}