List<HashMap<String, Object>> results =
[{CAR_NO=9509, SENDTIME=Mon Aug 03 12:00:10 CST 2009,OBJECTID=15},
{CAR_NO=9507, SENDTIME=Fri Aug 03 12:00:30 CST 2029,OBJECTID=4},
{CAR_NO=9508, SENDTIME=Fri Jan 01 01:00:00 CST 2010,OBJECTID=370},
{CAR_NO=9507, SENDTIME=Mon Aug 03 12:00:20 CST 2009,OBJECTID=3},
{CAR_NO=9507, SENDTIME=Fri Jan 01 01:00:00 CST 2010,OBJECTID=18},
{CAR_NO=9507, SENDTIME=Mon Aug 03 12:00:00 CST 2009,OBJECTID=1},
{CAR_NO=9509, SENDTIME=Mon Aug 03 12:00:20 CST 2009,OBJECTID=16},
{CAR_NO=9509, SENDTIME=Mon Aug 03 12:00:30 CST 2009,OBJECTID=17},
{CAR_NO=9507, SENDTIME=Fri Jan 01 01:00:00 CST 2010,OBJECTID=338},
{CAR_NO=9508, SENDTIME=Fri Jan 01 01:00:00 CST 2010,OBJECTID=386},
{CAR_NO=9508, SENDTIME=Mon Aug 03 12:00:21 CST 2009,OBJECTID=12}]
帮忙写个方法,需要返回一个包含9507,9508,9509这三个NO的最后时间的结果,如下
[{CAR_NO=9509, SENDTIME=Mon Aug 03 12:00:30 CST 2009,OBJECTID=17},
{CAR_NO=9507, SENDTIME=Fri Jan 01 01:00:00 CST 2010,OBJECTID=338},
{CAR_NO=9508, SENDTIME=Fri Jan 01 01:00:00 CST 2010,OBJECTID=370},]
[{CAR_NO=9509, SENDTIME=Mon Aug 03 12:00:10 CST 2009,OBJECTID=15},
{CAR_NO=9507, SENDTIME=Fri Aug 03 12:00:30 CST 2029,OBJECTID=4},
{CAR_NO=9508, SENDTIME=Fri Jan 01 01:00:00 CST 2010,OBJECTID=370},
{CAR_NO=9507, SENDTIME=Mon Aug 03 12:00:20 CST 2009,OBJECTID=3},
{CAR_NO=9507, SENDTIME=Fri Jan 01 01:00:00 CST 2010,OBJECTID=18},
{CAR_NO=9507, SENDTIME=Mon Aug 03 12:00:00 CST 2009,OBJECTID=1},
{CAR_NO=9509, SENDTIME=Mon Aug 03 12:00:20 CST 2009,OBJECTID=16},
{CAR_NO=9509, SENDTIME=Mon Aug 03 12:00:30 CST 2009,OBJECTID=17},
{CAR_NO=9507, SENDTIME=Fri Jan 01 01:00:00 CST 2010,OBJECTID=338},
{CAR_NO=9508, SENDTIME=Fri Jan 01 01:00:00 CST 2010,OBJECTID=386},
{CAR_NO=9508, SENDTIME=Mon Aug 03 12:00:21 CST 2009,OBJECTID=12}]
帮忙写个方法,需要返回一个包含9507,9508,9509这三个NO的最后时间的结果,如下
[{CAR_NO=9509, SENDTIME=Mon Aug 03 12:00:30 CST 2009,OBJECTID=17},
{CAR_NO=9507, SENDTIME=Fri Jan 01 01:00:00 CST 2010,OBJECTID=338},
{CAR_NO=9508, SENDTIME=Fri Jan 01 01:00:00 CST 2010,OBJECTID=370},]
还是有好多Map,但每个Map中只有一条数据?
import java.util.Date;
public class SortClass implements Comparable<SortClass>{
private String car_no;
private Date sendTime;
private String objectId;
/**
* @return the car_no
*/
public SortClass(String no,Date time,String id)
{
car_no=no;
sendTime=time;
objectId=id;
}
public String getCar_no() {
return car_no;
}
/**
* @return the sendTime
*/
public Date getSendTime() {
return sendTime;
} public String getObjectId() {
return objectId;
}
public int compareTo(SortClass sortClass)
{
if(sendTime.before(sortClass.sendTime))
return 1;
if(sendTime.after(sortClass.sendTime))
return -1;
return 0;
}}import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
public class Test { public static void main(String[] args) throws ParseException
{
Map <String, String> results =new HashMap <String, String>();
SortClass[] sortClassArray=new SortClass[11];
SimpleDateFormat sd=new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
Date date=sd.parse("Mon Aug 03 12:00:10 CST 2009");
sortClassArray[0]=new SortClass("9509",date,"15");
date=sd.parse("Fri Aug 03 12:00:30 CST 2009");
sortClassArray[1]=new SortClass("9507",date,"4");
date=sd.parse("Fri Jan 01 01:00:00 CST 2010");
sortClassArray[2]=new SortClass("9508",date,"370");
date=sd.parse("Mon Aug 03 12:00:20 CST 2009");
sortClassArray[3]=new SortClass("9507",date,"3");
date=sd.parse("Fri Jan 01 01:00:00 CST 2010");
sortClassArray[4]=new SortClass("9507",date,"18");
date=sd.parse("Mon Aug 03 12:00:00 CST 2009");
sortClassArray[5]=new SortClass("9507",date,"1");
date=sd.parse("Mon Aug 03 12:00:20 CST 2009");
sortClassArray[6]=new SortClass("9509",date,"16");
date=sd.parse("Mon Aug 03 12:00:30 CST 2009");
sortClassArray[7]=new SortClass("9509",date,"17");
date=sd.parse("Fri Jan 01 01:02:00 CST 2010");
sortClassArray[8]=new SortClass("9507",date,"338");
date=sd.parse("Fri Jan 01 01:00:00 CST 2010");
sortClassArray[9]=new SortClass("9508",date,"386");
date=sd.parse("Mon Aug 03 12:00:21 CST 2009");
sortClassArray[10]=new SortClass("9508",date,"12");
Arrays.sort(sortClassArray);
for(SortClass sortClass:sortClassArray)
{
if(!results.containsKey(sortClass.getCar_no()))
{
results.put(sortClass.getCar_no(),"CAR_NO="+sortClass.getCar_no()+", "+"SENDTIME="+sortClass.getSendTime()+", "+"OBJECTID="+sortClass.getObjectId());
}
}
for(String key:results.keySet())
{
System.out.println(results.get(key));
}
}
}结果:
CAR_NO=9507, SENDTIME=Fri Jan 01 01:02:00 CST 2010, OBJECTID=338
CAR_NO=9508, SENDTIME=Fri Jan 01 01:00:00 CST 2010, OBJECTID=370
CAR_NO=9509, SENDTIME=Mon Aug 03 12:00:30 CST 2009, OBJECTID=17
import java.text.*;class Test6 {
public static String data = "CAR_NO=9509, SENDTIME=Mon Aug 03 12:00:10 CST 2009,OBJECTID=15| "+
" CAR_NO=9507, SENDTIME=Fri Aug 03 12:00:30 CST 2009,OBJECTID=4| "+
" CAR_NO=9508, SENDTIME=Fri Jan 01 01:00:00 CST 2010,OBJECTID=370|"+
" CAR_NO=9507, SENDTIME=Mon Aug 03 12:00:20 CST 2009,OBJECTID=3| "+
" CAR_NO=9507, SENDTIME=Fri Jan 01 01:00:00 CST 2010,OBJECTID=18| "+
" CAR_NO=9507, SENDTIME=Mon Aug 03 12:00:00 CST 2009,OBJECTID=1| "+
" CAR_NO=9509, SENDTIME=Mon Aug 03 12:00:20 CST 2009,OBJECTID=16| "+
" CAR_NO=9509, SENDTIME=Mon Aug 03 12:00:30 CST 2009,OBJECTID=17| "+
" CAR_NO=9507, SENDTIME=Fri Jan 01 01:00:00 CST 2010,OBJECTID=338|"+
" CAR_NO=9508, SENDTIME=Fri Jan 01 01:00:00 CST 2010,OBJECTID=386|"+
" CAR_NO=9508, SENDTIME=Mon Aug 03 12:00:21 CST 2009,OBJECTID=12| ";
//先把你给的数据放到你给的容器中,三种数据的Object不知道你原来是什么类型,CAR_NO和OBJECTID,我处理为Integer,SENDTIME处理为Date。
//
public List<HashMap <String, Object>> getList(String data) throws Exception{
List<HashMap <String, Object>> myList=new ArrayList <HashMap <String, Object>>();
SimpleDateFormat sdf=new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
String[] mapDataString=data.split("\\|\\s*");
for(String strInMap:mapDataString){
String[] mapData=strInMap.split(",\\s*");
HashMap <String, Object> newMap=new HashMap <String, Object>();
String[] carNo=mapData[0].split("=");
newMap.put(carNo[0],new Integer(carNo[1]));
String[] sendTime=mapData[1].split("=");
newMap.put(sendTime[0],sdf.parse(sendTime[1]));
String[] objectId=mapData[2].split("=");
newMap.put(objectId[0],new Integer(objectId[1]));
myList.add(newMap);
}
return myList;
}
//从原始数据中把最后时间的数据提出来,以List<HashMap <String, Object>>形式返回。
//
public List<HashMap <String, Object>> getDataOfLastTime(List<HashMap <String, Object>> myList){
//定义下面这个HashMap<String,HashMap<String,Object>>是为了把最后的时间的数据筛选出来。
//key为CAR_NO,value是myList中的一个HashMap.
//
HashMap<Integer,HashMap<String,Object>> filter=new HashMap<Integer,HashMap<String,Object>>();
//下面的算法就是把myList中的每一个HashMap拿出来,与filter中的相同CAR_NO对应的HashMap比较。
//比较的依据是SENDTIME.把大的放入filter中。
//
for(HashMap<String,Object> dataMap: myList){
Integer carNo=(Integer)dataMap.get("CAR_NO");
Date sendDate=(Date)dataMap.get("SENDTIME");
if(filter.get(carNo)!=null){
Date sendDate2=(Date)filter.get(carNo).get("SENDTIME");
if(sendDate.compareTo(sendDate2)>0){
filter.put(carNo,dataMap);
}
}else{
filter.put(carNo,dataMap);
}
}
return new ArrayList<HashMap <String, Object>>(filter.values());
}
//把List<HashMap <String, Object>>中的数据打印出来。
//
public void printList(List<HashMap <String, Object>> myList){
System.out.println("Car_No SendTime ObjectId ");
for(HashMap<String,Object> mapData : myList){
System.out.println(mapData.get("CAR_NO")+" "+mapData.get("SENDTIME")+" "+mapData.get("OBJECTID"));
}
}
public static void main(String[] args) throws Exception{
Test6 test=new Test6();
System.out.println("原始数据:");
List<HashMap <String, Object>> myList=test.getList(data);
test.printList(myList);
System.out.println("\n筛选后的数据:");
test.printList(test.getDataOfLastTime(myList));
}
}
F:\java>java Test6
原始数据:
Car_No SendTime ObjectId
9509 Mon Aug 03 12:00:10 CST 2009 15
9507 Mon Aug 03 12:00:30 CST 2009 4
9508 Fri Jan 01 01:00:00 CST 2010 370
9507 Mon Aug 03 12:00:20 CST 2009 3
9507 Fri Jan 01 01:00:00 CST 2010 18
9507 Mon Aug 03 12:00:00 CST 2009 1
9509 Mon Aug 03 12:00:20 CST 2009 16
9509 Mon Aug 03 12:00:30 CST 2009 17
9507 Fri Jan 01 01:00:00 CST 2010 338
9508 Fri Jan 01 01:00:00 CST 2010 386
9508 Mon Aug 03 12:00:21 CST 2009 12筛选后的数据:
Car_No SendTime ObjectId
9507 Fri Jan 01 01:00:00 CST 2010 18
9508 Fri Jan 01 01:00:00 CST 2010 370
9509 Mon Aug 03 12:00:30 CST 2009 17
//key为CAR_NO,value是myList中的一个HashMap改为:
//定义下面这个HashMap<Integer,HashMap<String,Object>>是为了把最后的时间的数据筛选出来。
//key为CAR_NO,value是myList中的一个HashMap
我老是描述不清我的想法.//定义下面这个HashMap<Integer,HashMap<String,Object>>是为了把最后的时间的数据筛选出来。
//key为CAR_NO,value是myList中的与key中的CAR_NO对应的HashMap.
//