用java重写Comparator实现自定义排序

这样的数据2014-04-01T15:47:33.273Z2014-04-01T15:47:33.444Z2014-04-01T15:47:33.614Z2014-04-... 这样的数据
2014-04-01T15:47:33.273Z
2014-04-01T15:47:33.444Z
2014-04-01T15:47:33.614Z
2014-04-06T19:43:03.202Z
2014-04-06T19:43:03.274Z
2014-04-06T19:43:03.372Z
2014-04-06T19:43:03.416Z
2014-09-26T18:49:34.024Z
2014-09-26T18:49:34.026Z
怎么重写Comparator实现排序呢,(这是一种时间格式,最好保留原格式,用重写比较接口的方式实现)
!!!最好把原数据建一个文本文件,读取后进行排序,然后排序后的结果也输出到文本文件中,要求有点多~!!!楼主新手!!请见谅~
展开
 我来答
匿名用户
推荐于2017-10-11
展开全部
package test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;

public class Test
{
public static void main ( String[] args )
{
String[] array = {
"2014-04-01T15:47:33.273Z",
"2014-04-01T15:47:33.444Z",
"2014-04-01T15:47:33.614Z",
"2014-04-06T19:43:03.202Z",
"2014-04-06T19:43:03.274Z",
"2014-04-06T19:43:03.372Z",
"2014-04-06T19:43:03.416Z",
"2014-09-26T18:49:34.024Z",
"2014-09-26T18:49:34.026Z"
};
final SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
Arrays.sort (array, new Comparator<String>()
{
@Override
public int compare ( String o1, String o2 )
{
try
{
Date d1 = sdf.parse (o1);
Date d2 = sdf.parse (o2);
if (d1.before (d2))
{
return 1;
}
else if (d1.after (d2))
{
return -1;
}
else
{
return 0;
}
}
catch (ParseException e)
{
e.printStackTrace ();
return 0;
}
}
});

for ( String string : array )
{
System.out.println (string);
}
}
}
追问
就是这样,但能不能用文本方式读取和输出啊??就是上面加的要求写的~我在加50分哦~!不好意思,实在新手!!
追答
进步啊
百度网友f9dfb0d
2015-03-06 · TA获得超过136个赞
知道小有建树答主
回答量:137
采纳率:0%
帮助的人:167万
展开全部
List<TestDate> dates=...;//要排序的时间

Collections.sort(dates,new Comparator<TestDate>(){
public int compare(TestDate t1, TestDate t2) {

if(t1.after(t2)){
return -1;
}else if(t1.before(t2)){
return 1;
}else{
return 0;
}
}
});

这样是降序,你要想升序把1和-1换一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
16sRNA
2015-03-06 · TA获得超过2500个赞
知道小有建树答主
回答量:391
采纳率:0%
帮助的人:361万
展开全部
List<String> dateList = new ArrayList<String>();
Collections.sort(dateList, new Comparator<String>(){

@Override
public int compare(String o1, String o2)
{
if(null == o1)
{
o1 = "";
}
if(null == o2)
{
o2 = "";
}

return o1.compareTo(o2);
}

});
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式