Skip to content

要对Stream的元素进行排序,您可以使用Stream.sorted()方法。sorted()方法可以按照自然顺序(如果元素实现了Comparable接口)或者通过提供一个自定义的比较器来进行排序。以下是一个示例:

List<Integer> numbers = Arrays.asList(5, 3, 1, 4, 2);
List<Integer> sortedNumbers = numbers.stream()
        .sorted()
        .collect(Collectors.toList());

在这个示例中,我们首先创建了一个包含整数的列表。然后,我们使用stream()方法创建一个Stream,并使用sorted()方法对整数进行排序。最后,我们使用collect()方法将排序后的元素收集到一个新的列表中。 如果要按照自定义的顺序进行排序,您可以提供一个Comparator对象作为参数给sorted()方法。

以下是一个按照字符串长度进行排序的示例:

List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
List<String> sortedNames = names.stream()
        .sorted(Comparator.comparing(String::length))
        .collect(Collectors.toList());

在这个示例中,我们使用sorted()方法的重载版本,提供了一个Comparator对象来指定排序顺序。

Comparator.comparing()方法接受一个用于提取排序键的函数,并返回一个Comparator对象。在这里,我们使用String::length作为排序键,即按照字符串的长度进行排序。

请注意,sorted()方法返回一个新的排序后的Stream,而不会修改原始的Stream。如果您希望原始的Stream进行排序,可以使用List.sort()方法。