www. On IT Road .com
Stream sorted() 方法示例
将 Stream 的元素按自然顺序排序
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> list = Arrays.asList(2, 4, 1, 3, 7, 5, 9, 6, 8); List<Integer> sortedList = list.stream() .sorted() .collect(Collectors.toList()); System.out.println(sortedList); } }
输出:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
使用 Comparator 对 Stream 的元素进行排序
倒序排序:
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> list = Arrays.asList(2, 4, 1, 3, 7, 5, 9, 6, 8); List<Integer> sortedList = list.stream() .sorted(Comparator.reverseOrder()) .collect(Collectors.toList()); System.out.println(sortedList); } }
使用自定义比较器对流进行排序
逆序排序:
import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> list = Arrays.asList(2, 4, 1, 3, 7, 5, 9, 6, 8); Comparator<Integer> reverseComparator = new Comparator<Integer>() { @Override public int compare(Integer i1, Integer i2) { return i2.compareTo(i1); } }; List<Integer> sortedList = list.stream() .sorted(reverseComparator) .collect(Collectors.toList()); System.out.println(sortedList); } }
使用 Lambda 表达式对流进行排序
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> list = Arrays.asList(2, 4, 1, 3, 7, 5, 9, 6, 8); List<Integer> sortedList = list.stream() .sorted( (i1, i2) -> i2.compareTo(i1) ) .collect(Collectors.toList()); System.out.println(sortedList); } }
使用 Stream sorted() 方法按自然顺序对 Stream 中的元素进行排序。
我们还可以使用提供的 Comparator 对元素进行排序。
Stream sort() 方法
Stream 接口提供了两种对 Stream 元素进行排序的方法。
- sorted() - 提供默认排序
- sorted(Comparator) - 基于提供的比较器进行排序。
Stream sorted()
Stream<T> sorted()
sorted()
是一个有状态的中间操作,它返回一个新的 Stream。- 它设置一个由该流的元素组成的流,按照自然顺序排序。
- 如果此流的元素不是
Comparable
,则在执行终端操作时可能会抛出java.lang.ClassCastException
。 - 对于有序流,排序是稳定的。
- 对于无序流,没有稳定性保证。
Stream sorted(Comparator)
Stream<T> sorted(Comparator<? super T> comparator)
- 这是一个有状态的中间操作,它返回一个新的流。
- 它返回一个由该流的元素组成的流,根据提供的 Comparator 进行排序。
- 对于有序流,排序是稳定的。
- 对于无序流,没有稳定性保证。
日期:2020-09-17 00:10:08 来源:oir作者:oir