基础类型List排序

//根据字符串长度进行排序

list.sort((a,b) -> b.length() - a.length());//长在前,短在后

list.sort((a,b) -> a.length() - b.length());//短在前,长在后

//对数字进行排序

List nums = Arrays.asList(3,1,5,2,9,8,4,10,6,7);

nums.sort(Comparator.reverseOrder()); //reverseOrder倒序

System.err.println("倒序:"+nums);

nums.sort(Comparator.naturalOrder()); //naturalOrder自然排序即:正序

System.err.println("正序:"+nums);

执行结果:

对象List单属性排序

List listDevs = ComparatorTest.getDevelopers();

System.out.println("排序前:");

//JAVA8的写法,循环

listDevs.forEach((developer)->System.out.println(developer));

//第一个写法

Collections.sort(listDevs, new Comparator() {

@Override

public int compare(Developer o1, Developer o2) {

return o1.getAge().compareTo(o2.getAge());

}

});

//第二个写法,JAVA8的写法,List 接口支持直接使用 sort 该方法,不再需要使用 Collections.sort 了

//listDevs.sort(listDevs, new Comparator() {

// @Override

// public int compare(Developer o1, Developer o2) {

// return o1.getAge().compareTo(o2.getAge();

// }

//});

//第三个写法,Lambda写法,JAVA8的写法

//listDevs.sort((Developer o1, Developer o2)->o1.getAge().compareTo(o2.getAge()));

//第四个写法,Lambda写法,JAVA8的写法

//listDevs.sort((o1, o2)->o1.getAge().compareTo(o2.getAge()));

//第五写法,个Lambda写法,JAVA8的写法

//listDevs.sort(Comparator.comparing(Developer::getAge));

//第六写法,个Lambda写法,JAVA8的写法

Comparator ageComparator = (o1, o2)->o1.getAge().compareTo(o2.getAge());

listDevs.sort(ageComparator); //按上面配置的顺序取值

listDevs.sort(ageComparator.reversed()); //按上面配置的顺序反向取值

System.out.println("排序后:");

//JAVA8的写法,循环

listDevs.forEach((developer)->System.out.println(developer));

对象List多属性排序

//多条件排序第一个写法,先按Age排序,再根据Salary排序

Comparator comparator = (o1, o2) -> {

if (o1.getName().equals(o2.getName())) {

return o1.getSalary().compareTo(o2.getSalary());

}

return o2.getAge().compareTo(o1.getAge());

};

listDevs.sort(comparator.reversed());

//多条件排序,先按Age排序,再根据Salary排序

Comparator ageComparator = (o1, o2)->o1.getAge().compareTo(o2.getAge());

Comparator salaryComparator = (o1, o2)->o1.getSalary().compareTo(o2.getSalary());

listDevs.sort(ageComparator.thenComparing(salaryComparator));

//多条件排序第二个写法,先按Age排序,再根据Salary排序

listDevs.sort(Comparator.comparing(Developer::getAge).thenComparing(Developer::getSalary));

执行结果:

java8list怎样排序_Java8 List排序相关推荐

  1. java8排序_java8大排序

    package com.xiaosa; import java.util.ArrayList; import java.util.List; public class EightSort { publ ...

  2. java comparator 排序_Java8 Comparator 排序方法

    Java8 Comparator 排序方法 Java8 中 Comparator 接口提供了一些静态方法,可以方便于我们进行排序操作,下面通过例子讲解下如何使用 对整数列表排序(升序) List li ...

  3. java 8 lambda 排序_Java8 用Lambda表达式给List集合排序的实现

    Lambda用到了JDK8自带的一个函数式接口Comparator. 准备一个Apple类 public class Apple { private int weight; private Strin ...

  4. Java List排序 java ListMap 排序 Java listmap 模拟 oracle 排序 Java listmap 模拟 mysql 排序

    Java List排序 java ListMap 排序 Java listmap 模拟 oracle 排序 Java listmap 模拟 mysql 排序 一.概述 近期的开发工作中,遇到一个需求: ...

  5. 用python写希尔排序_python希尔排序介绍(实例)

    希尔排序介绍 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本,该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个&qu ...

  6. TreeSet集合(自然排序和比较器排序)

    TreeSet集合 自然排序和比较器排序 ​ 当指执行插入排序.希尔排序.归并排序等算法时,比较两个对象"大小"的比较操作.我们很容易理解整型的 i>j 这样的比较方式,但当 ...

  7. 冒泡链表排序java_链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)...

    以下排序算法的正确性都可以在LeetCode的链表排序这一题检测.本文用到的链表结构如下(排序算法都是传入链表头指针作为参数,返回排序后的头指针) struct ListNode { int val; ...

  8. 排序算法---选择排序(java版)

    简单选择排序 原理 选择排序(Selection Sort)的原理有点类似插入排序,也分已排序区间和未排序区间.但是选择排序每次会从排序区间中找到最小的元素,将其放到已排序区间的末尾. 简单选择排序执 ...

  9. 排序算法---计数排序(java版)

    计数排序 原理 计数排序(Counting Sort) 使用了一个额外的数组 C,其中第 i 个元素是待排序数组A 中值等于 i 的元素的个数.然后根据数组 C 来将 A 中的元素排到正确的位置.其实 ...

最新文章

  1. ipvsadm的几个参数输出的说明
  2. 战神背光键盘如何关系_?复工了?换个键盘先!0-2000元键盘推荐
  3. 【★】假如人类使用16进制
  4. python之多线程编程(一):基本介绍
  5. 汇编怎么输入_一位过来人的嵌入式汇编语言学习经验
  6. 程序员是终身学习的职业,应该怎么学习?
  7. 【辨异】limit, limitation
  8. 签到界面加图片java_签到功能实现,没有你想的那么复杂(二)
  9. matlab 求obb,obb包围盒代码
  10. Spring核心JAR包
  11. MATLAB线性方程组的两种求解,matlab求解线性方程组
  12. 第四章 结构化程序设计
  13. 函数(详解)——C语言
  14. 动人的牵线美的连接符-两张表的查询(一)
  15. 解决 TypeError: expected string or bytes-like object
  16. 用JS改变html样式
  17. kms工具(2021.7.24更新)
  18. 用户故事地图,产品经理必须掌握的分析利器
  19. 【信息技术】【2010.09】声纳和水下摄像机图像分析
  20. windows server 2003 AD迁移到windows server2012(一)

热门文章

  1. 三角肌前束(07):斯科特举
  2. PRPD图谱matlab,局部放电标准图谱全解.doc
  3. mysql左连接内连接闲谈
  4. 22考研英语复习学长攻略:英语做题的最优顺序
  5. 觉得电脑开机太慢?调整关机选项挺关键的
  6. 费德勒球拍穿线背后的秘密
  7. 弥补学生时代的遗憾~C#注册表情缘
  8. 高通sdm660 uart dts配置
  9. SPSS分析技术:决策树分析;银行如何判断申请贷款者的还款能力?
  10. 逆水寒7.25服务器维护,玩法改动_逆水寒7月25日更新_7月25日改动_3DM网游