`

Stream List 的排序

    博客分类:
  • java
 
阅读更多

https://blog.csdn.net/yiyihuazi/article/details/123681478

 

 

1、list的正序

 

List<Integer> list = new ArrayList<>();

list.add(50);

list.add(45);

list.add(25);

list.add(98);

list.add(32);

List<Integer> collect = list.stream().sorted().collect(Collectors.toList());

System.out.println("list<Integer>元素正序:" + collect);

 

打印结果:

list<Integer>元素正序:[25, 32, 45, 50, 98]

 

2、list的倒序

 

List<Integer> list = new ArrayList<>();

list.add(50);

list.add(45);

list.add(45);

list.add(98);

list.add(32);

List<Integer> collect = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());

System.out.println("list<Integer>元素倒序:" + collect);

 

打印结果:

list<Integer>元素倒序:[98, 50, 45, 45, 32]

 

3、List的元素的属性值正序

 

Person p1 = new Person("张三", new BigDecimal("50.0"));

Person p2 = new Person("王五", new BigDecimal("25.0"));

Person p3 = new Person("李四", new BigDecimal("68.0"));

Person p4 = new Person("李四", new BigDecimal("17.0"));

Person p5 = new Person("张三", new BigDecimal("45.0"));

List<Person> list = new ArrayList<>();

list.add(p1);

list.add(p2);

list.add(p3);

list.add(p4);

list.add(p5);

list.sort(Comparator.comparing(person -> person.getSalary()));

System.out.println(list);

 

打印结果:

元素的属性值正序:[{name='李四', salary=17.0}, {name='王五', salary=25.0}, {name='张三', salary=45.0}, {name='张三', salary=50.0}, {name='李四', salary=68.0}]

 

4、List的元素的属性值倒序

 

Person p1 = new Person("张三", new BigDecimal("50.0"));

Person p2 = new Person("王五", new BigDecimal("25.0"));

Person p3 = new Person("李四", new BigDecimal("68.0"));

Person p4 = new Person("李四", new BigDecimal("17.0"));

Person p5 = new Person("张三", new BigDecimal("45.0"));

List<Person> list = new ArrayList<>();

list.add(p1);

list.add(p2);

list.add(p3);

list.add(p4);

list.add(p5);

List<Person> collect = list.stream().sorted(Comparator.comparing(Person::getSalary).reversed()).collect(Collectors.toList());

System.out.println("元素的属性值倒序:" + collect);

 

打印结果:

元素的属性值倒序:[{name='李四', salary=68.0}, {name='张三', salary=50.0}, {name='王五', salary=45.0}, {name='张三', salary=45.0}, {name='李四', salary=17.0}]

 

 

 

1. stream流根据年龄正序排序

resultList.stream().sorted(Comparator.comparing(User::getAge))

.collect(Collectors.toList());

1

2

2. stream流根据年龄倒序排序

在正序的基础上增加reversed

 

resultList = resultList.stream().sorted(Comparator.comparing(User::getAge)

.reversed()).collect(Collectors.toList());

1

2

3. stream流先按学生年龄降序排序,年龄相等的话,则按年级升级排序

resultList =  resultList.stream().sorted(Comparator.comparing(User::getAge)

                              .reversed()

                              .thenComparing(Comparator.comparing(User::getGrade))

                    ).collect(Collectors.toList());

1

2

3

4

4. stream流先按年龄降序排序,再按年级降序排序

resultList =  resultList.stream().sorted(Comparator.comparing(User::getAge)

                              .reversed()

                              .thenComparing(Comparator.comparing(User::getGrade).reversed())

                    ).collect(Collectors.toList());

 

分享到:
评论

相关推荐

    Android里List时间升序排序

    由于Collections排序实际上是对字符串进行比较,然后对日期排序,但是有时候给的日期不是很规范,所以想把日期统一化, 这样用Collections进行升序排序

    Java lambda Stream List过滤筛选、排序、分组(Java进阶).md

    Java lambda Stream List过滤筛选、排序、分组(Java进阶)

    java8 stream自定义分组求和并排序的实现

    主要介绍了java8 stream自定义分组求和并排序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    java1.8 中 stream 的 groupingBy 最大值、最小值分组

    主要是介绍在 JDK8中使用 stream 流的 groupingBy 方法源进行最大值分组、最小值分组、平均值分组、统计分组

    java8 List 实用方法App.java

    实用方法,使用java8 stream对List 分组,去重,自定义排序

    java8stream源码-SortNFiles:排序N个文件

    list of random 10 integers 4. each integer contains 8 digits 5. prints file generation timing statistics per file and total Step 2: Merge all numbers from some files if CLI parameter is “-s [foler_...

    List 去重的6种方法(contains、迭代、hashSet、treeSet、linkedHashSet、stream)

    此方法的实现代码较为简洁,但缺点是 HashSet 会自动排序,这样新集合的数据排序就和原集合不一致了 4:TreeSet去重(无序) 比较遗憾的是,TreeSet 虽然实现起来也比较简单,但它有着和 HashSet 一样的问题,会自动...

    Java Stream、File、IO.pdf

    使用 Java Stream 可以方便地进行过滤、映射、排序和聚合等操作。下面是一个简单的示例: 该示例将一个整数列表中的偶数筛选出来,并将它们加起来。 List&lt;Integer&gt; numbers = Arrays.asList(1, 2, 3, 4, 5); int ...

    JAVA JDK8 List分组获取第一个元素的方法

    今天小编就为大家分享一篇关于JAVA JDK8 List分组获取第一个元素的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    根据list中对象的属性去重和排序小结(必看篇)

    下面小编就为大家带来一篇根据list中对象的属性去重和排序小结(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    如何实现java8 list按照元素的某个字段去重

    主要介绍了如何实现java8 list按照元素的某个字段去重,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下

    java实现把一个List集合拆分成多个的操作

    主要介绍了java实现把一个List集合拆分成多个的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    Jdk8都7岁了,你还在用for循环遍历list吗?3分钟学习一下Stream吧

    这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。 熟悉Linux的同学对这种风格一定不陌生,因为它跟Linux的|管道符的思想如出一辙。上面这段话...

    java8学习笔记

    java8学习笔记基本用法创建测试实体,测试类1、根据字段分组2、根据字段排序3、根据字段去重4、根据条件过滤filter5、stream().map归并 基本用法 创建测试实体,测试类 创建测试对象DemoUser: public class ...

    Java基础知识点.html

    哈希值 LinkedHashSet TreeSet 自然排序Comparable 比较器排序Comparator Set集合 并发修改异常 LinkedList集合 ArrayList集合 List集合 Collection集合概述 冒泡排序 Object 异常 Math 包装类 Calendar类 ...

    C++标准程序库STL的架构

    13.2 基本的Stream类别和Stream对象 144 13.3 文件存取 144 13.3.1 重定向 147 13.3.2 用于读写的Stream 147 13.4 String Stream class 148 13.4.1 Stream缓冲区迭代器示例 14 国际化 150149 15 空间配置器

    新版java教程 全套javase零基础到高级视频教程小白自学编程下载地址

    ,重点讲解Collection:集合框架体系List/Set/Map多种 实现和API ·玩转集合框架迭代器和HashCode和Equals重新排序 实战 ·实战teratori迭代器和自定义Comparable:排序接口 ·玩转ava操作文件File类常用操作 ·案例...

    java进阶13天资料.zip

    day05-迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类 day06-Map集合,HashMapTreeMap,斗地主、图书管理系统,排序算法 day07-异常,线程的创建方式,,线程安全,线程同步 day08-线程状态,volatile关键字...

    JDK1.8对于集合操作的简化处理的应用

    /** * jdk 1.8对于集合各种操作简化处理的学习 * (1)集合转为stream * (2)面向流的filter(有返回值... * (3)处理后的stream转为集合collect collectors.toList() Collectors.toSet(),Collectors.toMap(Perso

Global site tag (gtag.js) - Google Analytics