java 代码 list对象 分组
时间: 2023-09-25 17:08:42 浏览: 124
可以使用Java 8的Stream API来对List对象进行分组,具体操作如下:
假设我们有一个List<Person>对象,每个Person对象都有一个age属性,我们想按照age属性的值进行分组:
```
List<Person> personList = new ArrayList<>();
// 添加Person对象到列表中
Map<Integer, List<Person>> ageGroupMap = personList.stream()
.collect(Collectors.groupingBy(Person::getAge));
// ageGroupMap是一个Map<Integer, List<Person>>对象,key是age属性的值,value是所有age等于该值的Person对象列表
```
上述代码中,我们使用了Collectors.groupingBy()方法来对List对象进行分组,该方法的参数是一个Function对象,用于指定分组依据。此外,我们还使用了Person::getAge方法引用来指定按照age属性进行分组。
相关问题
java 代码 list对象 多个字段分组
如果需要对List对象进行多个字段分组,可以使用Java 8的Stream API结合Collectors.groupingBy()方法的重载版本来实现。具体操作如下:
假设我们有一个List<Person>对象,每个Person对象有两个属性:age和gender,我们想按照这两个属性的值进行分组:
```
List<Person> personList = new ArrayList<>();
// 添加Person对象到列表中
Map<List<Object>, List<Person>> groupMap = personList.stream()
.collect(Collectors.groupingBy(p -> Arrays.asList(p.getAge(), p.getGender())));
// groupMap是一个Map<List<Object>, List<Person>>对象,key是按照age和gender属性分组的结果,value是所有符合条件的Person对象列表
```
上述代码中,我们使用了Collectors.groupingBy()方法的重载版本,该版本接受一个Function对象和一个Collector对象作为参数,用于指定分组依据和分组结果的收集器。在本例中,我们使用了Arrays.asList()方法来将age和gender属性的值组成一个List对象,作为分组的结果。最终得到的groupMap是一个Map对象,key是按照age和gender属性分组的结果,value是所有符合条件的Person对象列表。
java List 对象属性 分组
可以使用 Java 8 中的 Stream API 和 Collectors 工具类来对 List 中的对象按照某个属性进行分组。以下是一个示例代码:
假设有一个 Person 类,包含 id、name、age 三个属性:
```
public class Person {
private int id;
private String name;
private int age;
// 省略 getter 和 setter 方法
}
```
现在有一个 List<Person> persons,需要按照 age 属性进行分组,将同一年龄的人放在同一个 List 中,可以这样写:
```
Map<Integer, List<Person>> result = persons.stream().collect(Collectors.groupingBy(Person::getAge));
```
这行代码的意思是:将 persons 中的元素转化为 Stream,然后使用 Collectors.groupingBy 方法按照 Person::getAge 方法的返回值进行分组,最终得到一个 Map 对象,其中 key 是年龄,value 是同年龄的人的 List。
如果需要按照多个属性进行分组,可以使用 Collectors.groupingBy 方法的重载版本,将多个属性进行拼接,例如:
```
Map<String, List<Person>> result = persons.stream().collect(Collectors.groupingBy(p -> p.getName() + "-" + p.getAge()));
```
这行代码的意思是:将 persons 中的元素转化为 Stream,然后使用 lambda 表达式将 name 和 age 属性进行拼接作为分组的 key,最终得到一个 Map 对象,其中 key 是 name-age 的组合,value 是同组合的人的 List。
阅读全文