java stream 排序 两个字段 分别排序
时间: 2024-02-05 07:09:18 浏览: 66
以下是使用Java Stream对两个字段进行排序的示例代码:
```java
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Main {
public static void main(String[] args) {
// 创建一个包含样例数据的列表
List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice", "New York", 25));
personList.add(new Person("Bob", "London", 30));
personList.add(new Person("Alice", "Paris", 28));
personList.add(new Person("Bob", "Tokyo", 35));
// 按照nick_name字段进行排序
Comparator<Person> byNickName = Comparator.comparing(Person::getNickName);
personList.sort(byNickName);
// 按照address字段进行排序
Comparator<Person> byAddress = Comparator.comparing(Person::getAddress);
personList.sort(byAddress);
// 输出排序结果
for (Person person : personList) {
System.out.println(person);
}
}
}
class Person {
private String nickName;
private String address;
private int age;
public Person(String nickName, String address, int age) {
this.nickName = nickName;
this.address = address;
this.age = age;
}
public String getNickName() {
return nickName;
}
public String getAddress() {
return address;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{" +
"nickName='" + nickName + '\'' +
", address='" + address + '\'' +
", age=" + age +
'}';
}
}
```
这段代码首先创建了一个包含样例数据的列表,然后使用`Comparator.comparing()`方法分别创建了两个比较器,分别按照`nick_name`和`address`字段进行排序。最后,通过调用`sort()`方法对列表进行排序,并使用`for`循环输出排序结果。
阅读全文