java8流sorted排序
时间: 2023-11-24 14:05:50 浏览: 62
Java8流中的sorted()方法用于对流进行排序操作。它有两种形式:无参形式和有参形式。
无参形式:默认按照自然顺序进行排序。
有参形式:可以传入一个Comparator对象,用于自定义排序规则。
示例:
```
List<Integer> list = Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5);
list.stream()
.sorted()
.forEach(System.out::println);
```
输出结果:
```
1
1
2
3
3
4
5
5
5
6
9
```
使用有参形式的示例:
```
List<String> list = Arrays.asList("apple", "banana", "orange", "pear");
list.stream()
.sorted((s1, s2) -> s1.length() - s2.length())
.forEach(System.out::println);
```
输出结果:
```
pear
apple
banana
orange
```
在这个示例中,我们传入了一个Comparator对象,它按照字符串长度进行排序。
相关问题
java8流sorted对对象进行排序
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}]
```
java8 stream sorted排序 返回值-1和0和1的区别
Java8 Stream中的sorted方法返回一个经过排序的流。当使用sorted方法时,它会根据提供的Comparator对元素进行排序。返回值-1表示第一个元素小于第二个元素,0表示两个元素相等,1表示第一个元素大于第二个元素。这些返回值可以用于进一步的比较和排序操作。
阅读全文