java中List排序 例子
2011-01-30 13:27
309 查看
java中List排序 例子
package test;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
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 Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String,Object> m1 = new HashMap<String,Object>();
m1.put("NO", 2);
m1.put("NO1", "2");
m1.put("NO2", "f");
list.add(m1);
Map<String,Object> m2 = new HashMap<String,Object>();
m2.put("NO", 1);
m2.put("NO1", "10");
m2.put("NO2", "z");
list.add(m2);
Map<String,Object> m3 = new HashMap<String,Object>();
m3.put("NO", 1);
m3.put("NO1", "10");
m3.put("NO2", "a");
list.add(m3);
Test test = new Test();
test.getSortedList(list,new String[]{"NO","NO1","NO2"});
System.out.println(list);
}
private void getSortedList(List<Map<String, Object>> list, String[] pros) {
if (pros.length <= 0)
return;
for (int i = pros.length - 1; i >= 0; i--) {
final String pro = pros[i];
try {
Collections.sort(list, new Comparator<Map<String, Object>>() {
String name = "get";
Method method = Map.class.getMethod(name, new Class[] {Object.class});
public int compare(Map<String, Object> a, Map<String, Object> b) {
if (a == null || b == null) {
return 0;
} else {
int flag = 0;
try {
Object as = method.invoke(a, new Object[] {pro});
Object bs = method.invoke(b, new Object[] {pro});
if (as == null && bs == null)
return 0;
else if (as == null)
return -1;
else if (bs == null)
return 1;
else {
if (as instanceof Integer) {
Integer va = (Integer) as;
Integer vb = (Integer) bs;
flag = va.compareTo(vb);
}else if (as instanceof String) {
String va = (String) as;
String vb = (String) bs;
flag = va.compareTo(vb);
}
}
} catch (IllegalArgumentException e) {
System.out.println("e1");
} catch (IllegalAccessException e) {
System.out.println("e2");
} catch (InvocationTargetException e) {
System.out.println("e3");
}
return flag;
}
}
});
} catch (NoSuchMethodException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
执行结果:
[{NO=1, NO2=a, NO1=10}, {NO=1, NO2=z, NO1=10}, {NO=2, NO2=f, NO1=2}]
package test;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
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 Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String,Object> m1 = new HashMap<String,Object>();
m1.put("NO", 2);
m1.put("NO1", "2");
m1.put("NO2", "f");
list.add(m1);
Map<String,Object> m2 = new HashMap<String,Object>();
m2.put("NO", 1);
m2.put("NO1", "10");
m2.put("NO2", "z");
list.add(m2);
Map<String,Object> m3 = new HashMap<String,Object>();
m3.put("NO", 1);
m3.put("NO1", "10");
m3.put("NO2", "a");
list.add(m3);
Test test = new Test();
test.getSortedList(list,new String[]{"NO","NO1","NO2"});
System.out.println(list);
}
private void getSortedList(List<Map<String, Object>> list, String[] pros) {
if (pros.length <= 0)
return;
for (int i = pros.length - 1; i >= 0; i--) {
final String pro = pros[i];
try {
Collections.sort(list, new Comparator<Map<String, Object>>() {
String name = "get";
Method method = Map.class.getMethod(name, new Class[] {Object.class});
public int compare(Map<String, Object> a, Map<String, Object> b) {
if (a == null || b == null) {
return 0;
} else {
int flag = 0;
try {
Object as = method.invoke(a, new Object[] {pro});
Object bs = method.invoke(b, new Object[] {pro});
if (as == null && bs == null)
return 0;
else if (as == null)
return -1;
else if (bs == null)
return 1;
else {
if (as instanceof Integer) {
Integer va = (Integer) as;
Integer vb = (Integer) bs;
flag = va.compareTo(vb);
}else if (as instanceof String) {
String va = (String) as;
String vb = (String) bs;
flag = va.compareTo(vb);
}
}
} catch (IllegalArgumentException e) {
System.out.println("e1");
} catch (IllegalAccessException e) {
System.out.println("e2");
} catch (InvocationTargetException e) {
System.out.println("e3");
}
return flag;
}
}
});
} catch (NoSuchMethodException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
执行结果:
[{NO=1, NO2=a, NO1=10}, {NO=1, NO2=z, NO1=10}, {NO=2, NO2=f, NO1=2}]
相关文章推荐
- java 简单的list、排序的例子
- Java.util.Collections.sort(List l) 排序 [implements Comparator]
- 给Java.util.List按指定顺序排序
- spark二次排序简单例子(JAVA)
- spark二次排序简单例子(JAVA)
- Java中List的排序
- java List 排序 Collections.sort() 对 List 排序
- JAVA中对list map根据map某个key值进行排序
- java list自定义排序
- java List 排序 Collections.sort()
- 【java List根据时间排序】
- java list 排序
- java list按照元素对象的指定多个字段属性进行排序
- java 对list内数据进行排序
- 由Java中的Set,List,Map引出的排序技巧
- Java Collections.sort方法对list集合排序
- Java中List根据指定字段排序工具类
- Java中List排序问题
- Java中应用Collections工具类的Sort()方法对List进行排序
- java List 排序 Collections.sort() 对 List 排序