`

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());

 

分享到:
评论

相关推荐

    java使用stream对日期排序

    本文将深入探讨如何使用Stream API对日期进行排序。日期排序在数据分析、日志处理、报表生成等场景中非常常见。下面我们将详细讨论相关知识点。 首先,我们需要了解Java中的日期时间API。在Java 8之前,我们通常...

    Android里List时间升序排序

    本篇文章将深入探讨如何在`List&lt;String&gt;`中实现日期的升序排序。在实际应用中,我们经常遇到日期字符串格式不一致的情况,这使得直接使用`Collections.sort()`方法进行排序可能会出现问题。为了解决这个问题,我们...

    java 使用Collections类对List的排序操作

    在实际开发中,我们还可以使用 Java 8 的流(Stream)API 对 `List` 进行排序,这种方式更加简洁和灵活。 ```java List&lt;Integer&gt; numbers = new ArrayList(Arrays.asList(1, 3, 2, 4)); numbers = numbers.stream()...

    使用List和Stream完成统计计算.zip

    2. **中间操作**:`Stream` API包含许多中间操作,如`filter()`用于过滤元素,`map()`用于转换元素,`distinct()`用于去除重复项,`sorted()`用于排序。这些操作不会立即执行,而是形成一个操作链。 3. **终止操作*...

    list集合树状排序-java

    可以考虑使用并行流(Parallel Stream)或线程池来加速排序过程,但要注意并发修改集合可能导致的并发问题。 总结起来,"list集合树状排序"是将具有层级关系的数据进行预处理,使其在前端以树形结构展示时能正确...

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

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

    Java对List多个排序、查询条件的处理

    在Java编程中,对List进行多个排序和查询条件的处理是一项常见的任务,特别是在处理数据集合时。本篇文章将深入探讨如何使用Java实现这些操作,并基于给出的`GroupFilterSortUtils.java`文件,我们可以推断这是一个...

    java 集合分组与排序

    Map, List&lt;Person&gt;&gt; peopleByAge = people.stream() .collect(Collectors.groupingBy(Person::getAge)); ``` 2. **排序**: Java集合框架提供两种主要的排序方式:`Collections.sort()`方法和流API的`sorted()`...

    java集合某个字段按照中文拼音排序.docx

    "Java集合某个字段按照中文拼音排序" Java集合某个字段按照中文拼音排序是Java开发中经常遇到的问题。对Java集合中的某个字段按照中文拼音排序可以使用多种方法,本文将介绍两种常见的方法。 方法一:使用...

    java中List对象列表实现去重或取出及排序的方法

    Java中List对象列表实现去重或取出及排序的方法 ...去重和排序List对象列表可以使用多种方法,包括重写equals和hashCode方法,使用HashSet,使用Java 8的Stream API等。根据实际情况选择合适的方法来实现。

    Android-StreamList横向流式布局点击删除

    4. 多功能:扩展StreamList,支持长按操作、拖拽排序等功能,增强用户体验。 总结,实现“StreamList横向流式布局点击删除”的功能需要理解Android布局系统,熟练掌握自定义ViewGroup、Adapter以及事件监听机制。...

    java8stream对list操作常用总结

    List&lt;Long&gt; idList = userList.stream().map(User::getId).collect(Collectors.toList()); ``` 这里,`User::getId` 是方法引用来获取每个用户的 ID,然后 `collect()` 方法将结果收集到一个新的 `List&lt;Long&gt;` 中...

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

    Java8 Stream 自定义分组求和并排序的实现 Java8 Stream 自定义分组求和并排序的实现是 Java8 中一个非常重要的知识点,该知识点的实现可以帮助开发者快速地实现分组求和并排序的操作,从而提高开发效率和代码质量...

    java中文排序,数字字母汉字排序

    Java集合框架中的`List`接口提供了一个`sort(Comparator&lt;? super E&gt; comparator)`方法,可以接受一个比较器(Comparator)来定义自定义的排序规则。默认情况下,Java使用自然排序,即按照字符串的Unicode值进行排序...

    在Java 8中将List转换为Map对象方法

    如果我们想要将List转换为Map,并对键进行自然排序,我们可以使用TreeMap来实现: Map, String&gt; mapOfEmployees = employees.stream().collect( Collectors.toMap( e -&gt; e.getEmpId(), e -&gt; e.getEmpName(), ...

    Java8 Stream学习

    不同于传统的集合类(如List、Set等),Stream API支持更加灵活的数据处理方式,使得开发人员能够以声明式的方式来处理数据。 **Stream** 是一种对数据源进行各种高效聚合操作的机制,它强调的是数据的流动性和处理...

    Stream_Java8.pdf

    Stream&lt;String&gt; parallelStream = list.parallelStream(); // 并行流 ``` 2. **通过数组创建**:使用`Arrays.stream(T[] array)`方法。 ```java int[] array = {1, 3, 5, 7, 8}; IntStream stream1 = Arrays....

    JDK8通过Stream 对List,Map操作和互转的实现

    在上面的代码中,我们首先将 Map 转换为一个 Stream,然后使用 sorted() 方法对 Key 进行排序,接着使用 map() 方法将每个 Entry 转换为一个 Person 对象,最后使用 collect() 方法将 Stream 转换为一个 List 对象。...

    关于stream的总结

    * sorted:用于返回排序后的流,例如:`List&lt;Person&gt; people = Arrays.asList( new Person(30, "Alice"), new Person(25, "Bob"), new Person(30, "Charlie"), new Person(25, "David")); List&lt;Person&gt; sortedPeople...

    DataSet 转化为List的通用方法

    将`DataSet`转换为`List`不仅可以提升数据处理的灵活性,还能简化后续的数据操作流程,如数据筛选、排序等。通过上述方法,开发者能够更加专注于业务逻辑的实现,而无需过多关注底层数据格式的转换细节,极大地提高...

Global site tag (gtag.js) - Google Analytics