java 将一个数据相同属性的对象分成不同数组
时间: 2024-05-11 15:18:02 浏览: 72
可以使用 Java 8 中的流(Stream)和过滤器(Filter)来实现将具有相同属性的对象分成不同数组的操作。下面是一个示例代码,假设我们有一个 `Person` 类,其中包含姓名(name)和年龄(age)两个属性:
```java
import java.util.*;
import java.util.stream.Collectors;
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 int getAge() {
return age;
}
public static void main(String[] args) {
// 构造 Person 对象列表
List<Person> persons = new ArrayList<>();
persons.add(new Person("Tom", 20));
persons.add(new Person("Jack", 20));
persons.add(new Person("Lucy", 18));
persons.add(new Person("Lily", 18));
// 使用流和过滤器将具有相同年龄的 Person 对象分成不同数组
Map<Integer, List<Person>> map = persons.stream().collect(Collectors.groupingBy(Person::getAge));
List<List<Person>> result = new ArrayList<>(map.values());
// 输出结果
for (List<Person> list : result) {
for (Person person : list) {
System.out.println(person.getName() + " " + person.getAge());
}
System.out.println("-------------------------");
}
}
}
```
以上代码中,我们使用 `groupingBy` 方法将具有相同年龄的 `Person` 对象分成一个 `Map`,然后将 `Map` 的值转化为一个 `List`,即可得到具有相同属性的 `Person` 对象的数组列表。最后,我们将每个数组输出即可。
阅读全文