java 代码 list对象 分组
时间: 2023-09-25 09:08:42 浏览: 58
可以使用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中可以使用Java 8中的Stream API来实现list快速分组求和。
例如,假设我们有一个包含数字的列表,要将它们按照奇偶性分组并求和,可以这样做:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// 使用stream()方法将列表转换为Stream对象,并使用Collectors.groupingBy()方法对数字进行分组
Map<String, Integer> sums = numbers.stream()
.collect(Collectors.groupingBy(
num -> num % 2 == 0 ? "even" : "odd", // 按照奇偶性进行分组
Collectors.summingInt(num -> num) // 对每组中的数字求和
));
System.out.println(sums); // 输出: {odd=25, even=30}
}
}
```
上述代码将输入列表中的数字按照奇偶性进行了分组,并对每个组内的数字进行了求和,最终输出了一个包含每个组的和的Map对象。