JAVA 假设我们有一个Person 对象列表,每个 Person 对象包含 name 和age 两个属性,现在需要按照年龄(age)属性对 Person 对象进行分组,对分组后的数据按照某个属性进行排序,并返回排序后的结果
时间: 2024-03-06 13:49:16 浏览: 48
可以按照以下步骤使用 Java 实现:
1. 定义 Person 类,包含 name 和 age 两个属性,以及对应的 getter 和 setter 方法。示例代码如下:
```java
public class 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 void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
```
2. 使用 Java 8 中的 Stream API 按照年龄属性对 Person 对象列表进行分组,示例代码如下:
```java
import java.util.*;
import java.util.stream.Collectors;
// 假设 personList 是 Person 对象列表
List<Person> personList = Arrays.asList(
new Person("Alice", 20),
new Person("Bob", 25),
new Person("Charlie", 20),
new Person("David", 30)
);
// 按照年龄属性对 Person 对象列表进行分组
Map<Integer, List<Person>> groupedPersons = personList.stream()
.collect(Collectors.groupingBy(Person::getAge));
// 打印分组后的结果
groupedPersons.forEach((age, persons) -> {
System.out.println("Age: " + age);
persons.forEach(person -> System.out.println(" Name: " + person.getName() + ", Age: " + person.getAge()));
});
```
3. 使用 Java 8 中的 Stream API 对分组后的数据按照某个属性进行排序,示例代码如下:
```java
// 对分组后的数据按照 name 属性进行排序,并返回排序后的结果
List<Person> sortedPersons = groupedPersons.values().stream()
.flatMap(List::stream)
.sorted(Comparator.comparing(Person::getName))
.collect(Collectors.toList());
// 打印排序后的结果
sortedPersons.forEach(person -> System.out.println("Name: " + person.getName() + ", Age: " + person.getAge()));
```
以上示例代码仅供参考,具体实现需要根据实际情况进行调整和优化。
阅读全文