Java8 Collections.sort()及Arrays.sort()中Lambda表达式及增强版Comparator的使用
摘要:本文主要介绍Java8 中Arrays.sort()及Collections.sort()中Lambda表达式及增强版Comparator的使用。
不废话直接上代码
import com.google.common.collect.Lists; import org.junit.Assert; import org.junit.Test; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List;public class ComparatorTest {@Testpublic void test1(){/*** Collections.sort()使用*///被排序的集合List<User> userList = Lists.newArrayList(new User("Jack",11),new User("Jack",10));//1. Java8之前,使用匿名内部类的基本排序Collections.sort(userList, new Comparator<User>() {@Overridepublic int compare(User user1, User user2) {return user1.getAge().compareTo(user2.getAge());}});//2. Java8,使用Lambda表达式的基本排序 Collections.sort(userList,(User user1, User user2) ->user1.getAge().compareTo(user2.getAge()));//userList.sort((User user1, User user2) -> user1.getAge().compareTo(user2.getAge()));//3. Java8,Lambda表达式可以简化,省略定义类型UseruserList.sort((user1, user2) -> user1.getAge().compareTo(user2.getAge()));//4. Java8,Lambda表达式,多条件排序userList.sort((user1, user2) -> {if (user1.getName().equals(user2.getName())) {return user1.getAge() - user2.getAge();} else {return user1.getName().compareTo(user2.getName());}});//5. Java8,多条件组合排序 userList.sort(Comparator.comparing(User::getName).thenComparing(User::getAge));//6. Java8,提取Comparator进行排序 Collections.sort(userList, Comparator.comparing(User::getName));//7. Java8,自定义静态的比较方法来排序(静态方法必须写在被比较的类(这里是User类)中) userList.sort(User::compareByAgeThenName);//8. Java8,反转排序Comparator<User> comparator = (user1, user2) -> user1.getName().compareTo(user2.getName());userList.sort(comparator);//先按name排序userList.sort(comparator.reversed());//反转排序Assert.assertEquals(userList.get(0),new User("Jack",10));/*** Arrays.sort()使用*///被排序的字符串数组String[] months = {"January","February","March","April","May","June","July","August","September","October","December"};//按字符串长度排序//1.Arrays.sort(months, (a, b) -> Integer.signum(a.length() - b.length()));//2. Arrays.sort(months, Comparator.comparingInt(String::length));//3.Arrays.sort(months, (a, b) -> a.length() - b.length());//4. Arrays.sort(months,(String a, String b) -> { return Integer.signum(a.length() - b.length()); });System.out.println(Arrays.toString(months));} }
原文地址:https://blog.csdn.net/qq_27127145/article/details/83930498
转载于:https://www.cnblogs.com/huiyi0521/p/10990535.html
Java8 Collections.sort()及Arrays.sort()中Lambda表达式及增强版Comparator的使用相关推荐
- java用lambda函数排序,Java8:使用Lambda表达式增强版Comparator排序
学习路上的自我记录-------路好长,就问你慌不慌,大声港,不慌.----jstarseven. 实体类: package com.server.model; /** * Created by js ...
- Collections.sort()和Arrays.sort()排序算法选择
今天面试的时候,被问到Collections.sort();和Arrays.sort();两个方法的排序算法实现,我只记得一个是快速排序一个是归并排序,但是刚刚看到没那么简单. Arrays.sort ...
- Java8中Lambda表达式的10个例子
Java8中Lambda表达式的10个例子 例1 用Lambda表达式实现Runnable接口 Java代码 //Before Java 8: new Thread(new Runnable() ...
- 变量不合法的表达式JAVA_Java8中lambda表达式的语法,别人都会的,你还不会吗?「一」...
函数式编程 函数式编程是一种编程方式,它将电脑运算视为函数的计算.函数编程语言最重要的基础是λ演算(lambda calculus),λ演算的函数可以接受函数当作输入(参数)和输出(返回值). 函数式 ...
- jdk 8 中 Lambda 表达式练习题(经典面试题)
jdk 8 中 Lambda 表达式练习题(经典面试题) 题1 调用 Collection.sort()方法,通过定制排序比较两个Employee(先按年龄,年龄相同按姓名比). 题2 ①声明函数式接 ...
- Java中Lambda表达式的使用
目录 1 简介 2 Lambda表达式的组成 2.1 Lambda表达式的函数式接口 2.2 对接口的要求 3 Lambda使用 3.1 基本使用 3.2 使用Lambdas和Streams 4 ...
- Java中Lambda表达式的使用(转)
https://www.cnblogs.com/franson-2016/p/5593080.html 简介 (译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖" ...
- Java中Lambda表达式和stream的使用
Java中Lambda表达式和stream的使用 转自 [*https://www.cnblogs.com/franson-2016/p/5593080.html*] 简介 (译者注:虽然看着很先进, ...
- python lambda表达式_Python中lambda表达式
Python中lambda表达式 1.lambda的应⽤用场景 如果一个函数有一个返回值,并且只有一句代码,可以使用 lambda简化. 2. lambda语法 lambda 参数列列表 : 表达式 ...
最新文章
- 【数据结构与算法】之深入解析“单词接龙”的求解思路与算法示例
- word怎么改正错误单词_在word 里要怎么让电脑自动识别错误的英语单词?
- 新颖的自我介绍_公众场合,如何做一个吸睛的自我介绍?
- android崩溃拦截给出提示显示日志
- 够快云库轻松解决文件复制速度过慢
- tp5 mysql 使用ignore_tp5数据库配置操作
- 傲梅分区助手 linux,傲梅分区助手专业版
- python实现Flesch Reading Ease Readability Formula——Flesch阅读易读性公式
- 树的前序、中序、后序遍历 | Tree Walk | C/C++实现
- 单例模式(懒汉,饿汉)
- 2019-11-29-win10-uwp-如何开始写-uwp-程序
- VMware安装_CentOS 7.x系统
- input 获取焦点的情况
- 【Algorithms公开课学习笔记3】 栈与队列
- LoadRunner通过SiteScope监控MySQL的性能
- python bokeh教程_使用Jupyter Notebook+bokeh绘图入门完整步骤
- 代理服务器软件_CCProxy
- Linux下(CentOS7)下载并安装Python 3.9教程
- 用MATLAB进行大地测量学上的子午线弧长计算
- 【Spring Boot】Spring Boot 2.x + Spring Security OAuth2 2.3.3 出现 bad client credentials 错误的踩坑记录