Java8排序stream.sorted()的使用

2025-05-29 0 69

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

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

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

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

?

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

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

?

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

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

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

?

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

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

?

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

2.使用List流排序()

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

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

}

}

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50
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流排序

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31
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流排序

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22
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()内容请搜索快网idc以前的文章或继续浏览下面的相关文章希望大家以后多多支持快网idc!

原文链接:https://blog.csdn.net/qq_34996727/article/details/94472999

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Java8排序stream.sorted()的使用 https://www.kuaiidc.com/107901.html

相关文章

发表评论
暂无评论