stream.sorted()自定义排序
时间: 2023-06-05 14:47:57 浏览: 121
stream.sorted()可以使用Comparator接口的compare方法来自定义排序。比如,如果我们有一个Person类,其中有两个属性:姓名和年龄,我们可以按照年龄从小到大排序:
```
List<Person> personList = new ArrayList<>();
personList.add(new Person("张三", 20));
personList.add(new Person("李四", 18));
personList.add(new Person("王五", 22));
List<Person> sortedList = personList.stream()
.sorted((p1, p2) -> p1.getAge() - p2.getAge())
.collect(Collectors.toList());
```
在这个例子中,我们使用了Lambda表达式来实现Comparator接口的compare方法,比较的是两个Person对象的年龄。sorted()方法会返回一个新的排序后的List。
相关问题
stream流sorted自定义排序
可以使用Java 8中的Stream.sorted()方法进行自定义排序。例如,我们可以这样实现一个按照字符串长度从小到大排序的函数:
List<String> list = Arrays.asList("apple", "banana", "pear", "orange");
List<String> sortedList = list.stream()
.sorted(Comparator.comparing(String::length))
.collect(Collectors.toList());
System.out.println(sortedList); // 输出:[pear, apple, banana, orange]
stream.sorted排序
你可以使用Java的Stream API中的sorted()方法来对流中的元素进行排序。sorted()方法可以接收一个Comparator参数,用于自定义排序规则。下面是一个示例代码:
```java
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> numbers = Arrays.asList(5, 2, 9, 1, 7);
// 使用自然顺序进行排序
List<Integer> sortedNumbers = numbers.stream()
.sorted()
.collect(Collectors.toList());
System.out.println("自然顺序排序结果:" + sortedNumbers);
// 使用自定义排序规则进行排序
List<Integer> customSortedNumbers = numbers.stream()
.sorted(Comparator.reverseOrder())
.collect(Collectors.toList());
System.out.println("自定义排序规则排序结果:" + customSortedNumbers);
}
}
```
输出结果:
```
自然顺序排序结果:[1, 2, 5, 7, 9]
自定义排序规则排序结果:[9, 7, 5, 2, 1]
```
在示例代码中,我们首先创建了一个包含一些整数的列表numbers。然后通过使用sorted()方法对流进行排序,得到了按照自然顺序排序的列表sortedNumbers。接着,我们使用了一个Comparator.reverseOrder()作为参数传递给sorted()方法,实现了按照逆序进行排序,得到了customSortedNumbers列表。最后,我们通过collect(Collectors.toList())将排序后的流转换为列表并输出结果。
阅读全文