java8流sorted对对象进行排序
时间: 2024-05-12 08:08:55 浏览: 15
Java 8中的流提供了一种便捷的方式对对象进行排序。可以使用sorted方法对流中的元素进行自然排序或者自定义排序。下面分别介绍两种方式。
自然排序
如果流中的元素实现了Comparable接口,那么可以使用sorted方法进行自然排序。例如,假设有一个Person类,实现了Comparable接口:
```
public class Person implements Comparable<Person> {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public int compareTo(Person o) {
return this.age - o.age;
}
}
```
上述代码中,Person类实现了Comparable接口,根据年龄进行比较。现在有一个Person列表,可以使用sorted方法进行排序:
```
List<Person> persons = Arrays.asList(
new Person("Tom", 35),
new Person("Jerry", 30),
new Person("Alice", 25)
);
List<Person> sortedPersons = persons.stream()
.sorted()
.collect(Collectors.toList());
```
使用sorted方法对流中的Person进行排序,由于Person实现了Comparable接口,所以默认按照年龄从小到大排序。最后得到的sortedPersons列表为:
```
[Person{name='Alice', age=25}, Person{name='Jerry', age=30}, Person{name='Tom', age=35}]
```
自定义排序
如果流中的元素没有实现Comparable接口,或者按照默认的排序方式无法满足需求,可以使用sorted方法的重载版本,传入一个Comparator对象进行自定义排序。例如,假设有一个Car类:
```
public class Car {
private String brand;
private int price;
public Car(String brand, int price) {
this.brand = brand;
this.price = price;
}
public String getBrand() {
return brand;
}
public int getPrice() {
return price;
}
}
```
现在有一个Car列表,按照价格从高到低进行排序:
```
List<Car> cars = Arrays.asList(
new Car("BMW", 500000),
new Car("Audi", 400000),
new Car("Mercedes", 600000)
);
List<Car> sortedCars = cars.stream()
.sorted(Comparator.comparing(Car::getPrice).reversed())
.collect(Collectors.toList());
```
使用sorted方法对流中的Car进行排序,传入一个Comparator对象,按照价格从高到低进行排序。最后得到的sortedCars列表为:
```
[Car{brand='Mercedes', price=600000}, Car{brand='BMW', price=500000}, Car{brand='Audi', price=400000}]
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)