java list<T> 根据两个字段排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java list<T> 根据两个字段排序相关的知识,希望对你有一定的参考价值。

我的问题是关于list<T>排序的问题我简单举例:article(文章) 表中有id,name(名称),sort(排序-int),pubulishiTime(发布时间-Date) 四个字段,表中有10条数据。我通过getAll()方法将十条数据全部取出来存入一个List<article>。然后现在我要做的是:对这个list进行排序,排序条件是 sort 和 pubulishiTime 两个字段。简单说明:sort 字段优先排序,pubulishiTime 其次。比如,文章1的sort 是1,那么它当然在第一位,但还有一篇文章的sort也是1,那么这个时候就要根据这两个文章的pubulishiTime 字段来排序了。 简单的说就是“双条件查询”,第一个条件重复了,就根据第二个条件查。 这个种需求Java代码的逻辑 和 oracle 数据语句 都该怎么写呢?希望得到简单明了的答案,谢谢。

参考技术A 两层循环去比较呗,不要循环嵌套 参考技术B 数据库库的话可以使用ORDER BY啊
select * from article order by sort,pubulishTime;

如果要是用JAVA的话,你可以通过List两层循环遍历,按Sort排序,
然后再两层循环遍历,判断Sort是否相等,相等的话,再按pubulishTime遍历
参考技术C 用oracle就可以了
order by sort,publishitime;

JAVA list 根据对象的某个属性排序

//需要排序的list
List<T> list= new ArrayList<>();

//开始排序
Collections.sort(list, new Comparator<T>(){
            public int compare(T o1, T o2) {
                //排序属性
                if(o1.getNum() < o2.getNum()){
                    return 1;
                }
                if(o1.getNum() == o2.getNum()){
                    return 0;
                }
                return -1;
            }
        });   

//排序完成  输出
System.out.println(new Gson().toJson(list))

 

以上是关于java list<T> 根据两个字段排序的主要内容,如果未能解决你的问题,请参考以下文章

java List<T>排序

java 中 List<T>如何按照T中的一个字段排序?

java把一个list里的数据转移到另外一个list

我们如何根据 value 中的两个字段对字典<List<int>、List<int>> 进行排序

java8特性--list集合根据多个字段去重

java 两个Map进行比较