分享好友 最新动态首页 最新动态分类 切换频道
Guava基本工具--排序: Guava强大的”流畅风格比较器”
2024-12-26 23:38

排序器[Ordering]是Guava流畅风格比较器[Comparator]的实现,它可以用来为构建复杂的比较器,以完成集合排序的功能。

从实现上说,Ordering实例就是一个特殊的Comparator实例。Ordering把很多基于Comparator的静态方法(如Collections.max)包装为自己的实例方法(非静态方法),并且提供了链式调用方法,来定制和增强现有的比较器。

创建排序器:常见的排序器可以由下面的静态方法创建

方法描述 natural() 对可排序类型做自然排序,如数字按大小,日期按先后排序 usingToString() 按对象的字符串形式做字典排序[lexicographical ordering] from(Comparator) 把给定的Comparator转化为排序器

实现自定义的排序器时,除了用上面的from方法,也可以跳过实现Comparator,而直接继承Ordering:

链式调用方法:通过链式调用,可以由给定的排序器衍生出其它排序器

方法描述 reverse() 获取语义相反的排序器 nullsFirst() 使用当前排序器,但额外把null值排到最前面。 nullsLast() 使用当前排序器,但额外把null值排到最后面。 compound(Comparator) 合成另一个比较器,以处理当前排序器中的相等情况。 lexicographical() 基于处理类型T的排序器,返回该类型的可迭代对象Iterable<T>的排序器。 onResultOf(Function) 对集合中元素调用Function,再按返回值用当前排序器排序。

例如,你需要下面这个类的排序器。

考虑到排序器应该能处理sortedBy为null的情况,我们可以使用下面的链式调用来合成排序器:

当阅读链式调用产生的排序器时,应该从后往前读。上面的例子中,排序器首先调用apply方法获取sortedBy值,并把sortedBy为null的元素都放到最前面,然后把剩下的元素按sortedBy进行自然排序。之所以要从后往前读,是因为每次链式调用都是用后面的方法包装了前面的排序器。

注:用compound方法包装排序器时,就不应遵循从后往前读的原则。为了避免理解上的混乱,请不要把compound写在一长串链式调用的中间,你可以另起一行,在链中最先或最后调用compound。

超过一定长度的链式调用,也可能会带来阅读和理解上的难度。我们建议按下面的代码这样,在一个链中最多使用三个方法。此外,你也可以把Function分离成中间对象,让链式调用更简洁紧凑。

最新文章
谷歌深夜发布Gemini 2.0,人工智能(159819)、软件30ETF(562930)备受关注
  消息面上,12月11日晚,刚刚发布量子芯片的谷歌,又投下一枚重磅炸弹,正式发布其最新版大模型Gemini 2.0系列,谷歌表示这是他们迄今为止最强大的人工智能模型,“专为智能体时代设计”,并同时介绍了多个智能体应用(AI Agent)。  
航海王鱼人岛篇特别编辑版
影片名称:航海王鱼人岛篇特别编辑版影片别名:影片类型:动漫影片导演:尾田荣一郎影片演员:田中真弓 , 冈村明美 , 中井和哉 , 山口胜平 , 平田广明 , 大谷育江 , 山口由里子 , 矢尾一树 , 长岛雄一 , 宝龟克寿年份地区:2024/日本更新时
规则引擎 drools_Java常用的规则引擎,让你变动的代码更加容易维护
在本文中,我们将介绍Java中一些最受欢迎的规则引擎。规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入
草根站长的源动力-国内站长网站缩影
随着互联网的发展,国内个人网站也迅速雨后春笋般迅速发展。犹如80年代的私营企业发展个人网站的故事也频繁登上各媒体的版面 非官方的统计:目前国内已经有草根站长300万个。已经开始盈利的个人网站 近5万个个人网站的总收入已经超过3亿 这
背包有个十字架的牌子 十大奢侈品包包排名及图标志
背包有个十字架的牌子,是一个备受关注的奢侈品包包品牌。随着时尚产业的发展和消费观念的改变,越来越多的消费者对于高品质、独特设计的包包有着强烈的需求。在这样的市场环境下,背包有个十字架的牌子以其独特的设计和卓越的品质迅速崛起
港股开盘:恒生指数开盘跌0.59%,恒生科指跌0.61%,美团跌近2%
金融界12月17日消息 港股恒生指数开盘跌0.59%,报19678.03点,恒生科技指数跌0.61%,报4387.62点,国企指数跌0.53%,报7095.14点,红筹指数跌0.1%,报3691.93点。大型科技股中,阿里巴巴-W跌0.53%,腾讯控股跌0.89%,京东集团-SW跌1.39%,
玩转serv00虚拟主机(一):零成本搭建wordpress个人博客&入门
不少童鞋在搭建博客、alist、图床等各类web服务的时候苦于云的成本望而却步,但其实搭建web服务也可以用虚拟主机,不少厂商都有免费的虚拟主机,但对于很多童鞋可能是第一次听说虚拟主机,这里就开一个新的系列,玩转serv00家的免费虚拟主
考研民商法学专业容易上岸的大学怎么选择
在准备考研的过程中,选择合适的学校是至关重要的一步。尤其是对于民商法学专业的考生来说,如何找到一所适合自己的学校更是需要认真考虑的事情。本文将为大家提供一份考研选择民商法学学校指南,帮助你在众多院校中做出明智的决定。首先,
老照片如何修复成高清?四个老照片修复教程全揭晓
让老照片焕发新生:给你分享老照片修复的精彩工具 提到老照片,很多人心中总是涌动着温暖的回忆。家人们,是否曾经翻阅过那些泛黄的照片,感受到那份岁月的沉淀?但时间的流逝总会导致照片的劣化,很多细节模糊甚至消失。那么,我们该如何
四川甜城旅游景点大全:热门景点排名及详细介绍
四川甜城即四川省内江市以其独有的地理位置和丰富的历史文化遗产而闻名遐迩。内江不仅是的“糖都”也是甜城文化的发源地。这里既有壮丽的自然景观又有深厚的历史文化底蕴是一个不可多得的旅游胜地。从古朴典雅的隆昌石牌坊到秀美宁静的甜城
相关文章
推荐文章
发表评论
0评