LIst合并后并排序问题

 

             我从数据库查出来的数据封装成了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]