java如何对类对象进行排序:以日期排序为例
我们以时间排序为例,来实现java对类对象的排序,设java某class的定义如下:
class cmpData
{
String Name;
String sDate;
public cmpData(String Name,String strDate) {
this.Name=Name;
this.sDate=strDate;
}
}
这里sDate表示某个日期,格式为”yyyy-mm-dd hh:mm:ss”,若使得类具有比较大小功能,可以继承接口Comparable,并重写接口方法compareTo:
class cmpData implements Comparable<cmpData>
{
String Name;
String sDate;
public cmpData(String Name,String strDate) throws ParseException {
this.Name=Name;
this.sDate=strDate;
}
@Override
public int compareTo(cmpData user) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
Date date1 = null;
try {
date1 = sdf.parse(this.sDate);
} catch (ParseException e) {
e.printStackTrace();
}
Date date2 = null;
try {
date2 = sdf.parse(user.sDate);
} catch (ParseException e) {
e.printStackTrace();
}
return (int) ((date1.getTime() - date2.getTime())/1000);
}
}
这里的比较函数compareTo里,对于日期的比较先调用SimpleDateFormat的parse函数解析字符串表示的日期并转换为Date类对象,然后调用Date的getTIme()函数将其表示的日期转化为时间戳,注意这里返回的是long型的时间戳,且单位为毫秒,而compareTo得返回值为int故需除以1000并转为int。这样就可以调用Collections得sort函数进行排序了代码如下:
public class DateSort{
public static void main(String[] args) throws ParseException
{
List<cmpData> list = new ArrayList<cmpData>();
list.add(new cmpData("bus1","2020-09-23 13:20:53"));
list.add(new cmpData("bus2","2018-12-23 23:17:25"));
list.add(new cmpData("bus3","2015-12-23 23:27:25"));
list.add(new cmpData("bus4","2019-12-23 23:37:25"));
Collections.sort(list);
for(int i=0;i<list.size();i++)
{
System.out.println(list.get(i).Name+" "+list.get(i).sDate);
}
}
}
运行结果:
bus3 2015-12-23 23:27:25
bus2 2018-12-23 23:17:25
bus4 2019-12-23 23:37:25
bus1 2020-09-23 13:20:53
原文作者:I_belong_to_jesus
原文地址: https://blog.csdn.net/fangfanglovezhou/article/details/111937653
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/fangfanglovezhou/article/details/111937653
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章