要创建具有两个属性的对象数组,并按照升序进行分组,可以按照以下步骤进行操作:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// getter和setter方法
// ...
}
Person[] persons = new Person[5];
persons[0] = new Person("John", 25);
persons[1] = new Person("Amy", 30);
persons[2] = new Person("David", 20);
persons[3] = new Person("Emily", 35);
persons[4] = new Person("Michael", 28);
import java.util.Arrays;
Arrays.sort(persons, (p1, p2) -> p1.getAge() - p2.getAge());
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
Map> groupedPersons = Arrays.stream(persons)
.collect(Collectors.groupingBy(Person::getAge));
在上述代码中,使用Java 8的流式操作将persons数组转换为流,然后使用Collectors.groupingBy方法按照年龄属性进行分组,生成一个Map对象,其中键为年龄值,值为具有相同年龄的Person对象列表。
完整示例代码如下:
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
Person[] persons = new Person[5];
persons[0] = new Person("John", 25);
persons[1] = new Person("Amy", 30);
persons[2] = new Person("David", 20);
persons[3] = new Person("Emily", 35);
persons[4] = new Person("Michael", 28);
Arrays.sort(persons, (p1, p2) -> p1.getAge() - p2.getAge());
Map> groupedPersons = Arrays.stream(persons)
.collect(Collectors.groupingBy(Person::getAge));
// 输出分组后的结果
for (Map.Entry> entry : groupedPersons.entrySet()) {
System.out.println("Age: " + entry.getKey());
for (Person person : entry.getValue()) {
System.out.println("Name: " + person.getName());
}
System.out.println();
}
}
}
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 int getAge() {
return age;
}
}
上述代码将persons数组按照年龄属性进行升序排序,然后按照年龄属性对数组进行分组,并输出分组结果。
下一篇:按照数字递增的顺序对数组进行排序