• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Java Guava排序器Ordering原理及代码实例

java 搞代码 4年前 (2022-01-05) 29次浏览 已收录 0个评论

这篇文章主要介绍了Java Guava排序器Ordering原理及代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一 创建排序器

排序器:可以用来为构建复杂的比较器,以完成集合排序的功能:

本质上来说,Ordering 实例无非就是一个特殊的Comparator 实例。

Ordering把很多基于Comparator的静态方法(如Collections.max)包装为自己的实例方法(非静态方法),

并且提供了链式调用方法,来定制和增强现有的比较器

 //创建排序器 @Test public void createOreing(){ //对可排序类型做自然排序,如数字按大小,日期按先后排序 Ordering natural = Ordering.natural(); //按对象的字符串形式做字典排序 Ordering.usingToString(); //把给定的Comparator转化为排序器或者继承Ordering实现自定义排序器 Ordering from = Ordering.from((Integer x, Integer y) -> Ints.compare(x, y)); System.out.println(from.max(5, 6)); }

二 扩展排序器,变换成其他功能排序器

 //衍生其他排序器 @Test public void anotherOreing(){ Ordering natural = Ordering.natural(); natural.max(1, 2); //2 //获取语义相反的排序器 natural.reverse().max(1, 2); //1 List list = Lists.newArrayList(5, 9, 3, 7, 4); Collections.sort(list,natural.nullsFirst()); //使用排序器对集合排序 list.forEach(x-> System.out.print(x+", ")); //3, 4, 5, 7, 9 // 不使用这两个排序器,排序元素不能为null,否则会报空指针 natural.nullsFirst();//使用当前排序器,并把null值排到最前 natural.nullsLast();//使用当前排序器,并把null值排到最后 natural.compound(natural);//合成另一个比较器,以处理当前排序器中的相等情况,即添加第二个比较器 //onResultOf:将function应用在各个元素上之后, 在使用原始ordering进行排序 Collections.sort(list,natural.onResultOf(x->x*(-1)));//元素变为负<strong style="color:transparent">来源gaodai#ma#com搞@@代~&码*网</strong>数再排序 list.forEach(x-> System.out.print(x+", ")); //9, 7, 5, 4, 3 }

三 使用排序器

 //使用排序器 @Test public void operOrdering(){ Ordering natural = Ordering.natural(); List list02 = Lists.newArrayList(6,4,9,3,1,5,3); /** * greatestOf: 获取可迭代对象中最大的k个元素,并按从大到小排序,返回一个集合 * leastOfL获取最小的几个,并按从小到大排序 */ natural.greatestOf(list02,1).forEach(x-> System.out.println(x)); //9 natural.leastOf(list02,1).forEach(x-> System.out.println(x)); //1 //返回集合的一个排好序的副本 natural.sortedCopy(list02); natural.immutableSortedCopy(list02); //返回不可变的排序副本 /** * isOrdered: 判断是否已经按排序器有序,元素不能少于2,允许有相等元素 * isStrictlyOrdered: 是否严格排序,不允许有相等元素 */ Collections.sort(list02,natural); natural.isOrdered(list02);//true natural.isStrictlyOrdered(list02); //false //其他直接比较元素 natural.compare(1,2);natural.max(5,6);natural.min(list02); }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持gaodaima搞代码网

以上就是Java Guava排序器Ordering原理及代码实例的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Java Guava排序器Ordering原理及代码实例

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址