J2SE 8的Lambda --- Comparator
Person[] personArray = new Person[]{new Person("Tom"),new Person("Jack"),new Person("Alice")};
//1. 使用静态的比较器,比较的对象不能为null值
Arrays.sort(personArray, Comparator.comparing(Person::getName));
for (Person person : personArray) {
System.out.println(person.getName());
}
System.out.println();
//2. 使用andThen,在第一层比较相同的情况下,使用andThen的比较器, 多次比较
personArray = new Person[]{new Person("Tom","A","Tom" ),new Person("Tom","B","Tom" ),new Person("Jack"),new Person("Alice")};
Arrays.sort(personArray, Comparator.comparing(Person::getName).thenComparing(Person::getFirstName).thenComparing(Person::getLastName));
for (Person person : personArray) {
System.out.println(person.getName()+"-"+person.getFirstName()+"-"+person.getLastName());
}
System.out.println();
//3. 变体格式,指定具体比较的内容
personArray = new Person[]{new Person("Tom"),new Person("Jack"),new Person("Alice")};
Arrays.sort(personArray, Comparator.comparing(Person::getName, (x,y)->Integer.compare(x.length(), y.length())));
for (Person person : personArray) {
System.out.println(person.getName());
}
System.out.println();
//4.对于可能返回null的情况,使用nullsFirst和nullsLast适配器
personArray = new Person[]{new Person("Tom"),new Person("Jack"),new Person("Alice"),new Person()};
Arrays.sort(personArray, Comparator.comparing(Person::getName, Comparator.nullsFirst(Comparator.naturalOrder())));
for (Person person : personArray) {
System.out.println(person.getName());
}
System.out.println();
//5. 逆序比较 Comparator.comparing().reversed()
personArray = new Person[]{new Person("Tom"),new Person("Jack"),new Person("Alice"),new Person()};
Arrays.sort(personArray, Comparator.comparing(Person::getName, Comparator.nullsFirst(Comparator.naturalOrder())).reversed());
for (Person person : personArray) {
System.out.println(person.getName());
}
System.out.println();
J2SE 8的Lambda --- Comparator的更多相关文章
- J2SE 8的Lambda --- 语法
语法例子 LambdaGrammarTest lambdaTest = new LambdaGrammarTest(); // 1. 能够推导出类型的,可以不写类型 String[] planets ...
- 优先队列PriorityQueue&Lambda&Comparator
今天翻阅<Labuladuo的算法小抄>时发现在使用优先队列的PriorityQueue解决一道hard题时(leetCode 23),出现了如下代码: ListNode mergeKLi ...
- J2SE 8的Lambda --- functions
functions //1. Runnable 输入参数:无 返回类型void new Thread(() -> System.out.println("In Java8!" ...
- Java8学习(3)- Lambda 表达式
猪脚:以下内容参考<Java 8 in Action> 本次学习内容: Lambda 基本模式 环绕执行模式 函数式接口,类型推断 方法引用 Lambda 复合 上一篇Java8学习(2) ...
- java中使用lambda表达式
使用lambda表达式能够使复杂的编写方式变的简单 lambda表达式的语法 (parameters) -> expression 或 (parameters) ->{ statement ...
- Java中lambda表达式学习
一.Lambda表达式的基础语法: Java8中引入了一个新的操作符"->"该操作符称为箭头操作符或Lambda操作符,箭头操作符将Lambda表达式拆分为两部分: 左侧:L ...
- lambda表达式已经成为了开发者必须要掌握的技能?
lambda表达式 lambda表达式是什么 引用百度百科 “Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的la ...
- Lambda 方法引用
1.方法引用:若Lambda 体中的内容有方法已经实现了,我们可以使用“引用方法”(可以理解为方法引用是Lambda表达式的另外一种表现形式) 方法引用主要有三种语法格式: ① 对象 :: 实例方法 ...
- 201521123008《Java程序设计》第六周实验总结
1.本周学习总结 2.书面作业 1.clone方法 1.1 Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么? 因为被protected修饰 ...
随机推荐
- streamsets 集成 rabbitmq 以及benthos stream 处理框架
benthos 是一个stream 处理框架,streamsets 也是,但是两者可以通过不同的工具进行集成起来 一般我们可以使用http 服务,消息中间件(kafka.rabbitmq ...) 使 ...
- .NET4.0框架退休日期逐渐临近
微软宣布了.NET框架4.0至4.5.1版本的生命周期终结计划. 2016年1月12日之后,所有的技术支持,包含安全和非安全的更新补丁,都将会停止.开发人员和用户到时候可以选择回退到.NET 3.5 ...
- 使用OPRT库来实现局域网视频实时传输
转载,侵删 4.代码设计 目的:使用OPRT库来实现局域网视频实时传输 参考samle_venc.c进行ortp开发 4.1.程序流程如下 step1:定义变量,VPSS,VENC,零散变量 step ...
- oracle之 redo过高诊断
一.诊断过度redo 要找到生成大量重做的会话,您可以使用以下任何一种方法.这两种方法都检查生成的撤销量.当一个事务生成撤销,它将自动生成重做. 当需要检查生成大量的程序时,使用第一个查询.当这些程序 ...
- js 逻辑的短路运算
&& 与运算 同时为true,才为true: 表达式1为false,不用看表达式2: || 或运算 有一个为true,就为true: 表达式1为true,不用看表达式2: && ...
- webpack的3个路径配置项: assetsRoot、assetsSubDirectory、assetsPublicPath
在 vue-cli 构建模版的配置文件config.js中有assetsRoot,assetsSubDirectory和assetsPublicPath这三个路径配置项 assetsRoot:构建输出 ...
- 使用纯生js操作cookie
前段时间做项目的时候要使用js操作cookie,jquery也有相应的插件,不过还是觉得纯生的js比较好,毕竟不依赖jq. //获得coolie 的值 function cookie(name) { ...
- android自定义tabhost,tabcontent用intent获得
地址:http://my.oschina.net/aowu/blog/36282 自己改的自定义tabhost组建,效果图如左.有更好的朋友可以相互交流一下,嘿嘿. 1.先上AndroidManife ...
- BASIC-12_蓝桥杯_十六进制转八进制
总结: 1.使用库函数可有效节省空间,但时间花费较多; 2.由于本题的输入数据较大,又限制时间,故要注意利用空间换时间; 3.使用顺序结构换取最小运行时间; 示例代码: #include <st ...
- jsoncpp 构造空数组
因为要构造类似如下的 {"FurnitureItemObject":[],"FurniturePlaceItemObject":[],"RoomNum ...