首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【小家Java】聊聊Java比较器(排序):Comparable和Comparator;SpringComparators和AnnotationAwareOrderComparator

此外,**实现此接口对象可以用作有序映射中键或有序集合集合,无需指定比较器。...default方法属于实例,static方法属于类(当然实例也可使用) // 逆序排序 用于集合排序~ default Comparator reversed() {...该方法多了一个参数 keyComparator ,keyComparator 是创建一个自定义比较器 注意是只比较是key // 比如这样子:Arrays.sort(people, Comparator.comparing...// @since 5.0 注意使用它和直接使用Comparator区别是,它要求你比较对象都实现了Comparable 否则都是不适 public abstract class Comparators...注意它用于Spring用来比较实现了Ordered接口对象。

2.7K11
您找到你想要的搜索结果了吗?
是的
没有找到

函数式接口复合方法示例 predicate 谓词逻辑运算 Function接口 组合运算 比较器 逆序 比较链

用来组合函数接口而得到更强大函数接口 另外还有比较器reversed thenComparing可以用于组合运算 这几个方法分别位于Function以及Predicate ?...andThen表示 接着进行下一步运算,也就是结果进入到下一个函数 调用者第一个函数结果作为被调用者第二个函数参数 也就是 第二个函数(第一个函数结果)    g(f(x)) 形式 compose...---- and, or, negate 与 或  非 与或非 和我们平时理解概念并无二致 就是执行逻辑运算 and和or方法是按照在表达式链位置,从左向右确定优先级。...sex).append('\''); sb.append(", age=").append(age); sb.append('}'); return sb.toString(); } } 主函数测试代码...方法参数正是一个Comparator,提供了 逆序 reversed 和  比较器链thenComparing   (还有基本类型特化方法) List stuList = new ArrayList

48430

如何优雅地给List集合排序

在平时开发,我们或多或少会用到排序。在最开始学习语言时候,我们都会学习基本排序算法。例如:冒泡排序,基数排序,快速排序,插入排序,选择排序。...例如在Sportsman对象,我们先按姓名进行第一排序,如果姓名相同,再按身高进行第二排序。上面的方法显然不适用,这时我们需要自定义比较方法了。...其实我们也不必自己定义排序方法,Java也有方法可以实现多属性排序。...方法为:java.util.Comparator#thenComparing(java.util.function.Function<? super T,?...如果集合元素有null值,使用Comparator.comparing会报空指针异常, @Test public void sortedNull() { final List<Sportsman

1.6K30

死磕Lambda表达式(五):Comparator复合

——《三体》 在上一篇文章中介绍了JDK为我们提供常用函数式接口,JDK不仅提供这些函数式接口,其中一些接口还为我们提供了实用默认方法,这次我们来介绍一下Comparator复合。...Comparator使用 在之前文章例子,我们使用Comparator.comparing静态方法构建了一个Comparator接口实例,我们再来简单介绍一下。...Comparator接口还有一个默认方法thenComparing就是做这个,它入参也是一个Function接口实例,如果前一个比较器比较结果相同,就当前比较器再进行比较,我们再来修改一下上面的例子...: maskList.sort(Comparator.comparing(Mask::getBrand) .reversed() .thenComparing(Mask:...口罩价格是double类型,如果使用thenComparing会导致自动装箱,造成资源白白浪费。

15720

(91) Lambda表达式 计算机程序思维逻辑

它们被大量使用于Java 8函数式数据处理Stream相关,关于Stream,我们下节介绍。 即使不使用Stream,也可以在自己代码中直接使用这些预定义函数,我们看一些简单示例。...它用于构建一个Comparator,比如,在前面的例子,对文件按照文件名排序代码为: Arrays.sort(files, (f1, f2) -> f1.getName().compareTo(f2...); } default Comparator thenComparing(Comparator<?...thenComparing也是一个返回一个新Comparator,在原排序认为两个元素排序相同时候,使用提供other Comparator进行比较。...Consumer, Predicate等都有一些复合方法,它们大量被用于下节介绍函数式数据处理API,具体我们就不探讨了。

61980

Java8特性详解 lambda表达式(二):流式处理lambda

在 Java ,Lambda 表达式格式是像下面这样 // 无参数,无返回值 () -> log.info("Lambda") // 有参数,有返回值 (int a, int b) -> { a...1 个,而 Function apply方法参数个数也是 1 个,参数个数对应上了,再来,apply方法参数类型和返回类型是泛型类型,所以肯定能和 parseInt方法对应上。...Stream b = Stream.of("d","e"); Stream c = Stream.concat(a,b); } 复制代码 max 一般用于求数字集合最大值...,另外一个有个 Comparator类型参数。...用于将一个类型转换成另外一个类型正合适,这也是 map初衷所在,用于改变当前元素类型,例如将 Integer 转为 String类型,将 DAO 实体类型,转换为 DTO 实例类型。

74830

Java 8 排序 10 个姿势,太秀了吧!同事直呼看不懂。。

1、Lambda 排序(带参数类型) Java 8 List 接口新增了一个 sort 默认方法: 接收 Comparator 接口参数,这个接口在 Java 8 中被修饰为函数式接口: 然后我们就可以把...Comparator 接口参数改成了用 Lambda 表达式形式,用 Lambda 表达式干掉了匿名内部类,让代码更简洁。...和 reversedOrder 区别在于,reversedOrder 适用于基本数据类型集合自然排序,而 reversed 是对 Comparator 自身封装,适用于对象自定义排序。...点击关注公众号,Java干货及时送达 7、组合排序 如果要先按用户年龄排序,年龄相同再按姓名排序,可以使用 Comparator 接口中 thenComparing 默认方法: private ...,所以我们可以用 Lambda 表达式、方法引用、Comparator 自身工具类等不同参数形式传入,可谓是太秀了。

1.4K30

系统学习Lambda表达式

在《挑苹果行为参数化思想》已经介绍了用Lambda表达式将行为抽象化,对Lambda表达式有一定认识。而本文将对Lambda表达式进行系统性介绍。 1....已知Lambda表达式可看作是匿名内部类实现,那对于匿名内部类来说最重要是类所实现接口,而Lambda表达式是否可用于所有接口?...(Apple::getWeight)); 对 Comparator 静态方法comparing 简单介绍下,接受一个 Function 类型参数,返回一个 Comparator 类型实例,定义如下...这样好处在于,我们可以在Lambda表达式之后直接跟上一个具体方法,对Lambda表达式增强,实现更复杂功能。在后文介绍用于复合表达式方法都是接口中 default 方法。...而使用 Comparator thenComparing 方法可以继续连接一个 Comparator,从而构建更复杂排序: apples.sort(Comparator.comparing(Apple

56920

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券