文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java8排序stream.sorted()的使用

2024-04-02 19:55

关注

    在这个页面上我们将提供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()内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯