java list集合分组
时间: 2023-10-14 17:11:27 浏览: 103
java list集合分组工具
Java中可以使用stream()和Collectors.groupingBy方法对List集合进行分组操作。
例如,假设我们有一个List<Person>集合,其中Person类有name和age两个属性,我们想按照年龄age进行分组:
```java
List<Person> personList = new ArrayList<>();
personList.add(new Person("Tom", 20));
personList.add(new Person("Jerry", 25));
personList.add(new Person("Lucy", 20));
personList.add(new Person("Lily", 25));
Map<Integer, List<Person>> groupByAge = personList.stream().collect(Collectors.groupingBy(Person::getAge));
```
上面的代码中,我们使用stream()方法将List集合转换为流,然后调用Collectors.groupingBy方法,传入Person::getAge作为分组依据,最终得到一个Map<Integer, List<Person>>对象,其中键为年龄,值为该年龄的所有Person对象。
如果要按照多个属性进行分组,可以使用Collectors.groupingBy方法的重载版本,传入一个Function对象,该对象返回一个包含多个属性值的键,例如:
```java
Map<String, List<Person>> groupByNameAge = personList.stream().collect(Collectors.groupingBy(person -> person.getName() + "_" + person.getAge()));
```
上面的代码中,我们将姓名和年龄拼接成一个字符串作为键,最终得到一个Map<String, List<Person>>对象,其中键为姓名和年龄拼接而成的字符串,值为该姓名和年龄组合的所有Person对象。
阅读全文