摘要:本文主要介绍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的使用相关推荐

  1. java用lambda函数排序,Java8:使用Lambda表达式增强版Comparator排序

    学习路上的自我记录-------路好长,就问你慌不慌,大声港,不慌.----jstarseven. 实体类: package com.server.model; /** * Created by js ...

  2. Collections.sort()和Arrays.sort()排序算法选择

    今天面试的时候,被问到Collections.sort();和Arrays.sort();两个方法的排序算法实现,我只记得一个是快速排序一个是归并排序,但是刚刚看到没那么简单. Arrays.sort ...

  3. Java8中Lambda表达式的10个例子

    Java8中Lambda表达式的10个例子  例1 用Lambda表达式实现Runnable接口 Java代码   //Before Java 8: new Thread(new Runnable() ...

  4. 变量不合法的表达式JAVA_Java8中lambda表达式的语法,别人都会的,你还不会吗?「一」...

    函数式编程 函数式编程是一种编程方式,它将电脑运算视为函数的计算.函数编程语言最重要的基础是λ演算(lambda calculus),λ演算的函数可以接受函数当作输入(参数)和输出(返回值). 函数式 ...

  5. jdk 8 中 Lambda 表达式练习题(经典面试题)

    jdk 8 中 Lambda 表达式练习题(经典面试题) 题1 调用 Collection.sort()方法,通过定制排序比较两个Employee(先按年龄,年龄相同按姓名比). 题2 ①声明函数式接 ...

  6. Java中Lambda表达式的使用

    目录 1 简介 2  Lambda表达式的组成 2.1  Lambda表达式的函数式接口 2.2 对接口的要求 3 Lambda使用 3.1 基本使用 3.2 使用Lambdas和Streams 4 ...

  7. Java中Lambda表达式的使用(转)

    https://www.cnblogs.com/franson-2016/p/5593080.html 简介 (译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖" ...

  8. Java中Lambda表达式和stream的使用

    Java中Lambda表达式和stream的使用 转自 [*https://www.cnblogs.com/franson-2016/p/5593080.html*] 简介 (译者注:虽然看着很先进, ...

  9. python lambda表达式_Python中lambda表达式

    Python中lambda表达式 1.lambda的应⽤用场景 如果一个函数有一个返回值,并且只有一句代码,可以使用 lambda简化. 2. lambda语法 lambda 参数列列表 : 表达式 ...

最新文章

  1. 【数据结构与算法】之深入解析“单词接龙”的求解思路与算法示例
  2. word怎么改正错误单词_在word 里要怎么让电脑自动识别错误的英语单词?
  3. 新颖的自我介绍_公众场合,如何做一个吸睛的自我介绍?
  4. android崩溃拦截给出提示显示日志
  5. 够快云库轻松解决文件复制速度过慢
  6. tp5 mysql 使用ignore_tp5数据库配置操作
  7. 傲梅分区助手 linux,傲梅分区助手专业版
  8. python实现Flesch Reading Ease Readability Formula——Flesch阅读易读性公式
  9. 树的前序、中序、后序遍历 | Tree Walk | C/C++实现
  10. 单例模式(懒汉,饿汉)
  11. 2019-11-29-win10-uwp-如何开始写-uwp-程序
  12. VMware安装_CentOS 7.x系统
  13. input 获取焦点的情况
  14. 【Algorithms公开课学习笔记3】 栈与队列
  15. LoadRunner通过SiteScope监控MySQL的性能
  16. python bokeh教程_使用Jupyter Notebook+bokeh绘图入门完整步骤
  17. 代理服务器软件_CCProxy
  18. Linux下(CentOS7)下载并安装Python 3.9教程
  19. 用MATLAB进行大地测量学上的子午线弧长计算
  20. 【Spring Boot】Spring Boot 2.x + Spring Security OAuth2 2.3.3 出现 bad client credentials 错误的踩坑记录

热门文章

  1. drop table中cascade的含义及用法
  2. 10. Firewalls (防火墙 2个)
  3. shell脚本采用crontab定时备份数据库日志
  4. 费用流 ZOJ 3933 Team Formation
  5. Windows下将nginx安装为服务运行
  6. 第三方控件radupload 使用方式以及报错处理
  7. Linux 常見的登錄檔檔名
  8. windows消息定义
  9. MySQL 5.7 并行复制参数优化
  10. android okhttp使用cookie请求