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}]
分享到:
相关推荐
java中的各种集合及其遍历总结;例子包括:List(ArrayList、LinkList),Set(HashSet、TreeSet),Map(HashMap),还有一个集合排序的例子
要注意的是List,Set,Queue继承了Collection接口,...这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类,泛型、重写equals、hashCode
但是通常排序算法不得不让程序员在写代码的过程中陷入对底层很多指针和位置的理解,java不希望这样,所以排序大多可以由java帮你做掉,例如,你要对一个数组排序,通过:Collections.sort(list)那么这个list被排序了...
java-dataStructure java数据结构的例子 最简单的树:目前只是一个最简单的树的建立,和常用方法的书写及测试 ...cn.treedemo.tree包下的TreeUtiles类是生成树所需要的工具类...cn.sortlist.list包下是排序的一些算法实现
Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加...
Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加...
CoreJava面试题总结。 1 常用的集合有哪些?为什么这么用? 2 静态变量和成员变量的区别 3 filter过滤器用过么,一般用在什么地方? 4 多线程一般用在什么地方? 5 list用过哪些?ArrayList如何排序?list跟set的...
java为数据结构中的列表定义了一个接口类java.util.list同时提供了3个实现类,分别是ArrayList、Vector、LinkedList使用; 生成不重复的随机数序列;列表、集合与数组的互相转换;java为数据结构中的映射定义一个接口...
在 java 语言中,Java 程序的基本单位是类,也就是说:一个 Java 程序是由多个类组成 的。定义一个类与定义一个数据类型是有区别的。在程序设计语言中,把定义数据类型的能 力作为一种很重要的能力来对待。在面向...
一个简单的小例子递归实现list按照index排序的树
7.8.1 排序操作 283 7.8.2 查找,替换操作 287 7.8.3 同步控制 288 7.8.4 设置不可变集合 288 7.9 烦琐的接口:Enumeration 289 7.10 本章小结 290 本章练习 290 第8章 泛型 291 8.1 泛型入门 292 8.1.1 ...
表、栈和队列3.1 抽象数据类型3.2 表ADT3.2.1 表的简单数组实现3.2.2 简单链表3.3 JavaCollectionsAPI中的表3.3.1 Collection接口3.3.2 Iterator接口3.3.3 List接口、ArrayList类和LinkedList类3.3.4 例:remove...
Java Web 程序设计教程 30 Student s=list.get(i);// System.out.println(s.getSno()+"," +s.getSname()+","+s.getScore()); } 其中,第 行部分在定义 List 时定义了泛型,保证 List 中的元素都是 Student 类型。...
8 对List排序 4. 9 HashSet. LinkedHashSet和TreeSet 4. 10 列表. 集合与数组的互相转换 4. 11 HashMap. Hashtable. LinkedHashMap和TreeMap 4. 12 对Map排序 4. 13 Properties属性文件 第...
实例13 Java中的进制与移位运算符 22 第3章 条件控制语句(教学视频:75分钟) 26 3.1 if控制语句 26 实例14 判断输入的年份是否为闰年 26 实例15 抽奖活动 27 3.2 for语句 28 实例16 ...
实例13 Java中的进制与移位运算符 22 第3章 条件控制语句(教学视频:75分钟) 26 3.1 if控制语句 26 实例14 判断输入的年份是否为闰年 26 实例15 抽奖活动 27 3.2 for语句 28 实例16 小九九乘法表 28 实例17 如何列...
表、栈和队列3.1 抽象数据类型3.2 表ADT3.2.1 表的简单数组实现3.2.2 简单链表3.3 JavaCollectionsAPI中的表3.3.1 Collection接口3.3.2 Iterator接口3.3.3 List接口、ArrayList类和LinkedList类3.3.4 例:remove...
实例13 Java中的进制与移位运算符 22 第3章 条件控制语句(教学视频:75分钟) 26 3.1 if控制语句 26 实例14 判断输入的年份是否为闰年 26 实例15 抽奖活动 27 3.2 for语句 28 实例16 小九九...