天天看点

java list 排序_如何利用java中的list和map对时间进行排序?

项目需要,放到list的数据,想让按照时间排序,该怎么处理呢?

java list 排序_如何利用java中的list和map对时间进行排序?

最初设想使用:时间long型

private void testTimes() throws InterruptedException{ Calendar cal=Calendar.getInstance(); cal.add(Calendar.DATE, 1); cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0); Long time1=cal.getTimeInMillis();   Calendar ca2=Calendar.getInstance(); ca2.add(Calendar.DATE, 1); ca2.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);  Long time2=ca2.getTimeInMillis();  System.out.println(time1+"--"+time2); }
           

发现整型可能不一致,即有时候一致,有时候不一致。

经测试发现,Collections提供了排序功能:

private void testSort(){ List cals=new ArrayList();  Calendar cal3=Calendar.getInstance(); cal3.add(Calendar.DATE, 2); cal3.set(cal3.get(Calendar.YEAR), cal3.get(Calendar.MONTH), cal3.get(Calendar.DAY_OF_MONTH), 0, 0, 0);  Calendar cal4=Calendar.getInstance(); cal4.add(Calendar.DATE, 2); cal4.set(cal4.get(Calendar.YEAR), cal4.get(Calendar.MONTH), cal4.get(Calendar.DAY_OF_MONTH), 0, 0, 0);  Calendar cal1=Calendar.getInstance(); cal1.add(Calendar.DATE, 2); cal1.set(cal1.get(Calendar.YEAR), cal1.get(Calendar.MONTH), cal1.get(Calendar.DAY_OF_MONTH), 0, 0, 2);  Calendar cal2=Calendar.getInstance(); cal2.add(Calendar.DATE, 2); cal2.set(cal2.get(Calendar.YEAR), cal2.get(Calendar.MONTH), cal2.get(Calendar.DAY_OF_MONTH), 0, 0, 0);  cals.add(cal3); cals.add(cal4); cals.add(cal1); cals.add(cal2);  Calendar minTime=Collections.min(cals); System.out.println(DateUtils.formatDate(Collections.min(cals).getTime(),"yyyy-MM-dd HH:mm:ss"));   for(int i=0;i
           

再来考虑map的时间排序如何做?

hashMap排序,示例:

private void test(){ Map> unSupportedDatesMap=new HashMap>(); unSupportedDatesMap.put("14:00-18:00