以下是一个示例代码,演示了如何按字段对对象数组进行分组:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class GroupByFieldDemo {
public static void main(String[] args) {
// 创建对象数组
List personList = new ArrayList<>();
personList.add(new Person("Alice", 25));
personList.add(new Person("Bob", 30));
personList.add(new Person("Alice", 35));
personList.add(new Person("Bob", 40));
// 按字段进行分组
Map> groupedMap = new HashMap<>();
for (Person person : personList) {
String name = person.getName();
if (!groupedMap.containsKey(name)) {
groupedMap.put(name, new ArrayList<>());
}
groupedMap.get(name).add(person);
}
// 打印分组结果
for (String name : groupedMap.keySet()) {
System.out.println("Group: " + name);
List group = groupedMap.get(name);
for (Person person : group) {
System.out.println(person);
}
System.out.println();
}
}
static 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;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
}
上述代码创建了一个Person
类,其中包含了姓名和年龄两个字段。我们将一个对象数组按姓名字段进行分组,使用HashMap
来存储分组结果。然后遍历对象数组,如果分组中不存在该姓名,则创建一个新的列表,并将该对象添加到列表中;如果分组中已存在该姓名,则直接将对象添加到列表中。最后,打印分组结果。
运行上述代码,将输出以下结果:
Group: Alice
Person{name='Alice', age=25}
Person{name='Alice', age=35}
Group: Bob
Person{name='Bob', age=30}
Person{name='Bob', age=40}
可以看到,对象数组按姓名字段成功分组,每个分组中包含对应的Person
对象。