关于List集合排序(关于时间)
今天遇到了一些问题,是关于在solr中获取数据排序的问题。
要关于pol_parent_id这一列来排序。
拿到需求的第一反应:妈耶 这么简单也叫我。 然后就直接:
query.addSort("pol_creadt_time", SolrQuery.ORDER.desc);
没毛病 编译执行。
返回的结果让我一脸懵???不对劲啊,于是我又再一次查询:
(黑人问号脸???)顺序是发生了变化,但是没有按照预想的发生。
哦豁???我这种小辣鸡又不太懂solr,虽然看到排序错误第一反应是solr里的字段设置错误。但我这种实习生也不能去改公司的solr啊..
于是乎陷入了沉思....
哦豁 哦豁豁!
我想到既然查询到最后也是用List来接这个结果,那我直接去改List里的排序不就好了吗??嘻嘻嘻嘻
new一个list来循环?
不不不,既然都有现成的工具为啥要麻烦自己呢。
Collections有一个sort方法,这时候拿出来用刚刚好,首先看看大佬们对这个方法的看法:
http://blog.****.net/xx326664162/article/details/52227690 文章出自:薛瑄的博客
好的,提炼成适合我的方法:
//根据时间排序
Collections.sort(list, new Comparator<PageData>() {
@Override
public int compare(PageData temp1, PageData temp2) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
Date dt1 = format.parse(temp1.getString("pol_creat_time"));
Date dt2 = format.parse(temp2.getString("pol_creat_time"));
if (dt1.getTime() < dt2.getTime()) {
return 1;
} else if (dt1.getTime() > dt2.getTime()) {
return -1;
} else {
return 0;
}
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
});
因为我不确定solr中的该字段数据类型,所以直接以string的方式拿了出来,再用格式转换成日期类型(我承认我是个傻乎乎的)
如果需要改变成比较别的内容的话,只要改变一下比较方式就好啦
笑嘻嘻保存编译运行。完美