Java8排序stream.sorted()

使用Java8排序stream.sorted()

http://www.concretepage.com/java/jdk-8/java-8-stream-

sorted-example
国外对Java8一系列总结的不错, 翻译过来给大家共享
这篇文章将会讲解Java 8 Stream sorted()示例, 我们能够以自然序或着用Comparator 接口定义的排序规则来排序一个流。Comparator 能用用lambada表达式来初始化, 我们还能够逆序一个已经排序的流。
接下来我们将会使用java 8 的流式sorted排序List 、Map 、 Set
1、sorted() 默认使用自然序排序, 其中的元素必须实现Comparable 接口
2、sorted(Comparator<? super T> comparator) :我们可以使用lambada 来创建一个Comparator 实例。可以按照升序或着降序来排序元素。

下面代码以自然序排序一个list

list.stream().sorted() 

1
自然序逆序元素,使用Comparator 提供的reverseOrder() 方法

list.stream().sorted(Comparator.reverseOrder()) 

1
使用Comparator 来排序一个list

list.stream().sorted(Comparator.comparing(Student::getAge)) 

1
把上面的元素逆序

list.stream().sorted(Comparator.comparing(Student::getAge).reversed()) 

1
Stream sorted() with List
我们排序一组装着Student 类对象的List 集合。 首先我们使用自然序, 接着我们使用Comparator 分别进行升序和降序:

SortList.java

package com.concretepage;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class SortList {
    public static void main(String[] args) {
        List<Student> list = new ArrayList<Student>();
        list.add(new Student(1, "Mahesh", 12));
        list.add(new Student(2, "Suresh", 15));
        list.add(new Student(3, "Nilesh", 10));

        System.out.println("---Natural Sorting by Name---");
        List<Student> slist = list.stream().sorted().collect(Collectors.toList());
        slist.forEach(e -> System.out.println("Id:"+ e.getId()+", Name: "+e.getName()+", Age:"+e.getAge()));

        System.out.println("---Natural Sorting by Name in reverse order---");
        slist = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
        slist.forEach(e -> System.out.println("Id:"+ e.getId()+", Name: "+e.getName()+", Age:"+e.getAge()));        

        System.out.println("---Sorting using Comparator by Age---");
        slist = list.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList());
        slist.forEach(e -> System.out.println("Id:"+ e.getId()+", Name: "+e.getName()+", Age:"+e.getAge()));

        System.out.println("---Sorting using Comparator by Age with reverse order---");
        slist = list.stream().sorted(Comparator.comparing(Student::getAge).reversed()).collect(Collectors.toList());
        slist.forEach(e -> System.out.println("Id:"+ e.getId()+", Name: "+e.getName()+", Age:"+e.getAge()));
    }
} 
  • Student.java *

    package com.concretepage;
      public class Student implements Comparable<Student> {
          private int id;
          private String name;
          private int age;
          public Student(int id, String name, int age) {
              this.id = id;
              this.name = name;
              this.age = age;
          }
          public int getId() {
              return id;
          }
          public String getName() {
              return name;
          }
          public int getAge() {
              return age;
          }
          @Override
          public int compareTo(Student ob) {
              return name.compareTo(ob.getName());
          }
              @Override
              public boolean equals(final Object obj) {
                if (obj == null) {
                   return false;
                }
                final Student std = (Student) obj;
                if (this == std) {
                   return true;
                } else {
                   return (this.name.equals(std.name) && (this.age == std.age));
                }
              }
              @Override
              public int hashCode() {
                int hashno = 7;
                hashno = 13 * hashno + (name == null ? 0 : name.hashCode());
                return hashno;
              }   
      } 
    
  • Output *

—Natural Sorting by Name—
Id:1, Name: Mahesh, Age:12
Id:3, Name: Nilesh, Age:10
Id:2, Name: Suresh, Age:15
—Natural Sorting by Name in reverse order—
Id:2, Name: Suresh, Age:15
Id:3, Name: Nilesh, Age:10
Id:1, Name: Mahesh, Age:12
—Sorting using Comparator by Age—
Id:3, Name: Nilesh, Age:10
Id:1, Name: Mahesh, Age:12
Id:2, Name: Suresh, Age:15
—Sorting using Comparator by Age with reverse order—
Id:2, Name: Suresh, Age:15
Id:1, Name: Mahesh, Age:12
Id:3, Name: Nilesh, Age:10

  • 14
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的Stream.sorted()方法用于对Stream中的元素进行排序。它可以实现自然排序,也可以使用Comparator提供的排序规则对流进行排序StreamJava 8中处理集合的关键抽象概念。它可以指定对集合进行的操作,例如查找、过滤和映射数据等操作。使用Stream API对集合数据进行操作类似于使用SQL执行数据库查询。 下面是一个示例,展示了使用Stream.sorted()方法对一个整数数组进行排序的过程: 原始数组:[5, 4, 3, 2, 7, 1, 6, 0, 9, 8] 升序数组:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 降序数组:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0] 请注意,升序数组和降序数组是通过调用Stream.sorted()方法实现的。在该示例中,按照自然排序对整数数组进行排序。 以上就是关于JavaStream.sorted()方法的说明和示例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Java stream().sorted() 排序应用](https://blog.csdn.net/jiahao1186/article/details/123066507)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [10.第十节-使用streamsorted实现排序.mp4](https://download.csdn.net/download/dong147258369/13043563)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值