我从数据库查出来的数据封装成了List<map<string,string>>的形式,一个map是一个条数据库表记录,key是数据库表中的字段名,value是字段对应的值。现在我有这样了2个List,这2个List中map的结构存储的数据都是一样的。这是因为我的应用中,有些List数据是从本地系统中查出来的,有些是从别人服务器上查出来的...还有就是map中有个操作时间的key_value
订单号 操作时间 操作站点 跟踪状态
123232 2010-01-10 12:20:00 总站 数据导入完毕
123232 2010-01-10 12:50:00 总站 数据发送到合作伙伴
123232 2010-01-10 12:20:00 上海建安-总站 接收数据成功
123232 2010-01-10 12:20:00 上海建安-总站 派送
字段名: 订单号 cwb 操作时间 trackdatetime 操作站点 branchname 跟踪状态 trackevent
前2条记录是在本地查的,后2条记录是在别人服务器查出来的.. 需要将这2个List合并之后按map中的操作时间去排个序。。。 只有这些分了,望大家见谅,以后补给大家,呵呵。。望大家各抒几见!!!
[code="java"]
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
Map<String,String> map1 = new HashMap<String, String>();
map1.put("operationTime", "2010-01-10 12:20:00");
Map<String,String> map2 = new HashMap<String, String>();
map2.put("operationTime", "2010-01-10 12:40:00");
Map<String,String> map3 = new HashMap<String, String>();
map3.put("operationTime", "2010-01-10 12:30:00");
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
list.add(map1);
list.add(map2);
list.add(map3);
System.out.println("排序前的list:");
System.out.println(list);
final SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Collections.sort(list, new Comparator<Map<String,String>>(){
public int compare(Map<String, String> o1, Map<String, String> o2)
{
//取出操作时间
int ret = 0;
try
{
ret = df.parse(o1.get("operationTime")).compareTo(df.parse(o2.get("operationTime")));
} catch (ParseException e)
{
throw new RuntimeException(e);
}
return ret;
}
});
System.out.println("排序后的list:");
System.out.println(list);
}
}
[/code]
Collections.addAll(Listlist,T b)
Collections.sort(List list, Comparator<? super T> c)
先用addAll将list连接起来,使用Comparator来进行排序。
1) map-> object->合并list->Collections.sort(合并后的list,排序方法)
2)排序方法 实现Comparator(比较object,按时间)
Collections.sort(List list, Comparator<? super T> c)
实现一个Comparator就好了,根据map中的操作时间来排序
连接
[code="java"]
List result = new ArrayList();
Collections.addAll(result, a);//假设a b即为那两个list
Collections.addAll(result, b);
[/code]
排序
[code="java"]
Collections.sort(result, new Comparator()
{
public int compare(Map o1, Map o2) {
Date date1 = (Date)o1.get("trackdatetime");
Date date2 = (Date)o2.get("trackdatetime");
return date1.compareTo(date2);
}
});
[/code]