jdk1.8 list分组
时间: 2023-07-08 18:26:45 浏览: 79
你可以使用Java 8中的Stream API来对List进行分组,以下是示例代码:
假设我们有一个Person类,其中包含姓名和年龄属性:
```
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;
}
}
```
现在我们有一个Person对象的List,我们要按照年龄分组:
```
List<Person> persons = new ArrayList<>();
persons.add(new Person("Alice", 21));
persons.add(new Person("Bob", 22));
persons.add(new Person("Charlie", 21));
persons.add(new Person("Dave", 23));
persons.add(new Person("Eve", 22));
```
我们可以使用以下代码来按年龄分组:
```
Map<Integer, List<Person>> personsByAge = persons.stream()
.collect(Collectors.groupingBy(Person::getAge));
```
这个代码将会返回一个Map,其中键是年龄,值是该年龄的Person对象列表。你可以使用Map的get方法来获取特定年龄的人的列表。
如果你想按名称首字母分组,你可以使用以下代码:
```
Map<Character, List<Person>> personsByName = persons.stream()
.collect(Collectors.groupingBy(p -> p.getName().charAt(0)));
```
这个代码将会返回一个Map,其中键是名称的首字母,值是该首字母开头的Person对象列表。
阅读全文