JAVA如何像SQL一样对List对象集合进行排序

发布时间:2020-07-21 09:09:30 作者:小猪
来源:亿速云 阅读:428

这篇文章主要讲解了JAVA如何像SQL一样对List对象集合进行排序,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

在开始之前,我先卖个关子提一个问题:假设我们有一个Movie类,这个类有三个成员变量分别是starred(是否收藏), title(电影名称), rating(评分)。你知道怎么对一个Movie对象组成的List集合,先按照是否收藏字段倒序排序,再按照评分的倒序进行排序么?如果您不知道4行代码以内的解决方案(其实是1行代码就可以实现,但笔者格式化为4行),我觉得您有必要一步步的看下去。

在java 8 之前,实现对象Collection排序,集合中被排序和比较大小的对象得实现Comparable接口。在java 8之后,有了Comparator比较器的概念,使用Comparator完成对象数组的排序更加方便快捷,下面就给大家简单的介绍一下java 8中使用Comparator排序的方法。

一、字符串List排序

JAVA如何像SQL一样对List对象集合进行排序

在java 7我们是使用Collections.sort()接受一个数组参数,对数组进行排序。在java 8之后可以直接调用集合类的sort()方法进行排序。sort()方法可以传入一个字符串的排序规则,如:String.CASE_INSENSITIVE_ORDER,也可以传入一个排序器Comparator.naturalOrder()作为参数。

二、整数类型List排序

JAVA如何像SQL一样对List对象集合进行排序

按数字的自然顺序排序,结果是[1, 2, 4, 6, 9]

三、按对象字段对对象List排序

这个功能就比较有意思了,举个例子大家理解一下。假设我们有一个类Movie,有三个成员变量分别是starred(是否收藏), title(电影名称), rating(评分)。

JAVA如何像SQL一样对List对象集合进行排序

JAVA如何像SQL一样对List对象集合进行排序

四、使用自定义Comparator排序

我们自定义一个排序器,实现compare函数。返回0表示元素相等,-1表示前一个元素小于后一个元素,1表示前一个元素大于后一个元素。这个规则似乎和java 8之前没什么区别。

JAVA如何像SQL一样对List对象集合进行排序

最终的打印结果如下,按照started的自定义规则进行排序。

JAVA如何像SQL一样对List对象集合进行排序

这段代码如果以lambda表达式简写。箭头左侧是参数,右侧是函数体,参数类型和返回值根据上下文自动判断。如下:

JAVA如何像SQL一样对List对象集合进行排序

五、通过Comparator链对对象List排序

 JAVA如何像SQL一样对List对象集合进行排序

上面这段代码先是按是否收藏的倒序排序,再按照电影的评分大小的倒序排序,排序结果如下:

JAVA如何像SQL一样对List对象集合进行排序

看完上述内容,是不是对JAVA如何像SQL一样对List对象集合进行排序有进一步的了解,如果还想学习更多内容,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. java如何对类的对象进行排序
  2. java中如何实现对类的对象进行排序

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java sql list

上一篇:配置 HTTP 与 DNS 功能

下一篇:如何使用PHP实现AES加密、解密

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》