好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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接口。 

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

?

1

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

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

?

1

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

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

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

?

1

list.stream().sorted(Comparator测试数据paring(Student::getAge)) .stream().sorted(Comparator测试数据paring(Student::getAge));

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

?

1

list.stream().sorted(Comparator测试数据paring(Student::getAge).reversed()) .stream().sorted(Comparator测试数据paring(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测试数据paring(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测试数据paring(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测试数据pareTo(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测试数据paring(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测试数据paring(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测试数据paring(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测试数据paring(Map.Entry::getKey))

    .forEach(e -> System.out.println( "Key: " + e.getKey() + ", Value: " + e.getValue()));

  }

}

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

原文链接: http://HdhCmsTestconcretepage测试数据/java/jdk-8/java-8-stream-sorted-example

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

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

查看更多关于Java8排序stream.sorted()的使用的详细内容...

  阅读:52次