java将list某一字段相同的转为map的key,value是list相同这个字段其他的字段组成的集合
时间: 2024-10-21 10:06:00 浏览: 26
Java8进行多个字段分组统计的实例代码
在Java中,你可以通过Stream API以及Lambda表达式来实现这种转换。假设你有一个`List<MyClass>`,其中`MyClass`有一个特定的字段(例如`fieldToKey`),你想基于这个字段创建一个Map,其中该字段作为键,值是一个包含其他字段的集合(例如`otherFields`)。这是一个示例:
```java
import java.util.*;
import java.util.stream.Collectors;
public class MyClass {
private String fieldToKey;
// 其他字段...
}
List<MyClass> myList = ...; // 你的列表
Map<String, List<MyFieldValues>> map = myList.stream()
.collect(Collectors.groupingBy(
MyClass::getFieldToKey, // 使用字段ToKey作为键
Collectors.mapping(
myClass -> new ArrayList<>(), // 创建一个新的值列表
MyClass::getOtherFields // 获取其他字段并放入列表中
)
));
```
在这个例子中,`getFieldToKey`是获取`fieldToKey`字段的方法,而`getOtherFields`是获取除`fieldToKey`之外所有字段的方法。这会生成一个Map,其中每个键都是列表中的一个`fieldToKey`值,对应的值是那些具有相同`fieldToKey`的`MyClass`实例的`otherFields`字段集合。
阅读全文