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修饰 ...
随机推荐
- python 直接将list 整体转化-----------map()
假设有这样一个 results = ['1', '2', '3'] 转化为下面这个样子 results = [1, 2, 3] 我们可以使用map函数 在Python2中这样操作: results = ...
- Java JNDI 学习
一.概念: 1.JNDI(JavaNaming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API ...
- 【转】每天一个linux命令(39):grep 命令
原文网址:http://www.cnblogs.com/peida/archive/2012/12/17/2821195.html Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表 ...
- ZooKeeper 知识点
zookeeper 命令: 命令 说明 ./zkServer.sh start 启动ZooKeeper(终端执行) ./zkServer.sh stop 停止ZooKeeper(终端执行) ./zkC ...
- 修改 input 框输入光标的样式
input, textarea { font-size: 24px; padding: 10px; color: red; text-shadow: 0px 0px 0px #000; -webkit ...
- Angular 4 绑定
一.事件绑定 1. 创建doOnClick函数 2. 网页中绑定doOnClick方法 3. 效果图 二. 属性绑定 1. 定义imgUrl的网址 2. 定义img src属性 另外一种写法 3. ...
- 【appium】根据UIAutomator定位元素
text属性的方法 driver.find_element_by_android_uiautomator('new UiSelector().text("Custom View") ...
- 如何判断事务是否完成,SqlTransaction
SqlConnection sconn = null; SqlCommand scmd = null; SqlTransaction strans = null; try { string sqlIn ...
- Android免费短信验证
转载请注明住处:http://blog.csdn.net/crazy1235/article/details/41912003 介绍 短信验证功能大家都很熟悉了.在很多地方都能见到,注册新用户或者短息 ...
- Django中间件执行流程
中间件函数是 django 框架为我们预留的函数接口, 让我们可以干预请求和应答的过程 1. 获取浏览器端的IP地址: 使用 request.META[‘REMOTE_ADDR’] 2. 使用中间件 ...