Java8排序stream.sorted()的使用

 更新时间:2021年03月17日 09:55:22   作者:延陵缥缈  
这篇文章主要介绍了Java8排序stream.sorted()的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    在这个页面上我们将提供java 8 Stream sorted()示例。我们可以按照自然排序以及Comparator提供的排序对流进行排序。在java 8中Comparator可以使用lambda表达式进行实例化。我们还可以反转自然排序以及提供的排序Comparator。自然排序使用提供的顺序Comparable,必须由其实例是流元素的类实现。在这个页面上我们将排序List,Map并Set使用java 8流sorted()方法。

1.sorted()方法的语法示例。 

1.1sorted():它使用自然顺序对流的元素进行排序。元素类必须实现Comparable接口。 

按自然升序对集合进行排序

list.stream().sorted() .stream().sorted();

自然序降序使用Comparator提供reverseOrder()方法

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

1.2 sorted(Comparator<? super T> comparator):这里我们创建一个Comparator使用lambda表达式的实例。我们可以按升序和降序对流元素进行排序。 

使用Comparator来对列表进行自定义升序。 

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

使用Comparator提供reversed()方法来对列表进行自定义降序。 。 

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

2.使用List流排序()

package com.stream.demo;
 
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
 
public class StreamListDemo {
 public static void main(String[] args) {
 List<Student> list = new ArrayList<>();
 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()));
 }
}
package com.stream.demo;
 
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;
 }
}

执行结果

---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

3.使用set流排序

package com.stream.demo;
 
import java.util.Comparator;
import java.util.HashSet;
import java.util.Set;
 
public class StreamSetDemo {
 public static void main(String[] args) {
 Set<Student> set = new HashSet<>();
 set.add(new Student(1, "Mahesh", 12));
 set.add(new Student(2, "Suresh", 15));
 set.add(new Student(3, "Nilesh", 10));
 
 System.out.println("---Natural Sorting by Name---");
 System.out.println("---Natural Sorting by Name---");
 set.stream().sorted().forEach(e -> System.out.println("Id:"
   + e.getId() + ", Name: " + e.getName() + ", Age:" + e.getAge()));
 
 System.out.println("---Natural Sorting by Name in reverse order---");
 set.stream().sorted(Comparator.reverseOrder()).forEach(e -> System.out.println("Id:"
   + e.getId() + ", Name: " + e.getName() + ", Age:" + e.getAge()));
 
 System.out.println("---Sorting using Comparator by Age---");
 set.stream().sorted(Comparator.comparing(Student::getAge))
   .forEach(e -> System.out.println("Id:" + e.getId() + ", Name: " + e.getName() + ", Age:" + e.getAge()));
 
 System.out.println("---Sorting using Comparator by Age in reverse order---");
 set.stream().sorted(Comparator.comparing(Student::getAge).reversed())
   .forEach(e -> System.out.println("Id:" + e.getId() + ", Name: " + e.getName() + ", Age:" + e.getAge()));
 }
}

4.使用Map流排序

package com.stream.demo;
 
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
 
public class StreamMapDemo {
 public static void main(String[] args) {
 Map<Integer, String> map = new HashMap<>();
 map.put(15, "Mahesh");
 map.put(10, "Suresh");
 map.put(30, "Nilesh");
 
 System.out.println("---Sort by Map Value---");
 map.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getValue))
   .forEach(e -> System.out.println("Key: "+ e.getKey() +", Value: "+ e.getValue()));
 
 System.out.println("---Sort by Map Key---");System.out.println("---Sort by Map Key---");
 map.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getKey))
   .forEach(e -> System.out.println("Key: "+ e.getKey() +", Value: "+ e.getValue()));
 }
}

这是在英文网站看到的示例,觉得还不错就翻译过来了。

原文链接:http://www.concretepage.com/java/jdk-8/java-8-stream-sorted-example 

到此这篇关于Java8排序stream.sorted()的使用的文章就介绍到这了,更多相关Java8 stream.sorted()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring5新功能日志框架Log4j2整合示例

    Spring5新功能日志框架Log4j2整合示例

    这篇文章主要为大家介绍了Spring5新功能之日志框架Log4j2的整合示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 解决mybatis映射mapper.xml文件不编译的问题

    解决mybatis映射mapper.xml文件不编译的问题

    这篇文章主要介绍了解决mybatis映射mapper.xml文件不编译的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 接口签名怎么用Java实现

    接口签名怎么用Java实现

    今天带大家学习java的相关知识,文章围绕怎么用Java实现接口签名展开,文中有非常详细的代码示例及介绍,需要的朋友可以参考下
    2021-06-06
  • 一种新的日期处理方式之JavaScript Temporal API

    一种新的日期处理方式之JavaScript Temporal API

    JavaScript Temporal API是一种为Web开发人员提供了一种新的处理日期和时间数据类型的方式。它的目的是使操作日期和时间更加简单和可靠,而且不用担心历史时区问题或全球化协调时间(UTC)之类的问题,感兴趣的同学可以参考阅读
    2023-05-05
  • 使用IntelliJ IDEA 15和Maven创建Java Web项目(图文)

    使用IntelliJ IDEA 15和Maven创建Java Web项目(图文)

    本篇文章主要介绍了使用IntelliJ IDEA 15和Maven创建Java Web项目(图文),具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • Java中的反射机制示例详解

    Java中的反射机制示例详解

    反射就是把Java类中的各个成分映射成一个个的Java对象。本文将通过示例详细讲解Java中的反射机制,感兴趣的小伙伴可以跟随小编学习一下
    2022-03-03
  • JAVA中重写(Override)与重载(Overload)的相关示例

    JAVA中重写(Override)与重载(Overload)的相关示例

    这篇文章主要给大家介绍了关于JAVA中重写(Override)与重载(Overload)的相关示例,重写(override)和重载(overload)是两种不同的方法重用技术,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • Java Socket 编程详解

    Java Socket 编程详解

    Java Socket 编程是指使用 Java 语言进行网络通信的过程,包括建立连接、传输数据和关闭连接等操作,本文将详细介绍Java Socket编程,需要的朋友可以参考下
    2023-05-05
  • 图解Java经典算法希尔排序的原理与实现

    图解Java经典算法希尔排序的原理与实现

    希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。本文会以图解的方式详细介绍希尔排序的基本思想及其代码实现
    2022-09-09
  • SpringBoot集成 JWT实现用户登录认证的项目实践

    SpringBoot集成 JWT实现用户登录认证的项目实践

    当今前后端分离时代,基于Token的会话保持机制比传统的Session/Cookie机制更加方便,本文主要介绍了SpringBoot集成 JWT实现用户登录认证的项目实践,感兴趣的可以了解一下
    2023-08-08

最新评论