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);
	}
}
Java Stream sort() 方法

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