关于List集合排序(关于时间)

今天遇到了一些问题,是关于在solr中获取数据排序的问题。

关于List集合排序(关于时间)_第1张图片

要关于pol_parent_id这一列来排序。

拿到需求的第一反应:妈耶  这么简单也叫我。   然后就直接:

query.addSort("pol_creadt_time", SolrQuery.ORDER.desc);

没毛病  编译执行。

关于List集合排序(关于时间)_第2张图片

返回的结果让我一脸懵???不对劲啊,于是我又再一次查询:

关于List集合排序(关于时间)_第3张图片

(黑人问号脸???)顺序是发生了变化,但是没有按照预想的发生。

关于List集合排序(关于时间)_第4张图片

哦豁???我这种小辣鸡又不太懂solr,虽然看到排序错误第一反应是solr里的字段设置错误。但我这种实习生也不能去改公司的solr啊..

于是乎陷入了沉思....关于List集合排序(关于时间)_第5张图片

哦豁  哦豁豁!

我想到既然查询到最后也是用List来接这个结果,那我直接去改List里的排序不就好了吗??嘻嘻嘻嘻关于List集合排序(关于时间)_第6张图片

new一个list来循环?

不不不,既然都有现成的工具为啥要麻烦自己呢。

Collections有一个sort方法,这时候拿出来用刚刚好,首先看看大佬们对这个方法的看法:

http://blog.csdn.net/xx326664162/article/details/52227690 文章出自:薛瑄的博客

关于List集合排序(关于时间)_第7张图片

好的,提炼成适合我的方法:

//根据时间排序
Collections.sort(list, new Comparator() {
    @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的方式拿了出来,再用格式转换成日期类型(我承认我是个傻乎乎的)

如果需要改变成比较别的内容的话,只要改变一下比较方式就好啦

笑嘻嘻保存编译运行。完美关于List集合排序(关于时间)_第8张图片

你可能感兴趣的:(实习过程中遇到的一些问题)