实体类集合通过stream转变成map<String,List<String>>
时间: 2024-10-19 19:06:37 浏览: 84
在Java 8中将List转换为Map对象方法
在Java中,如果你有一个实体类的列表,并想要将其转换为键值对的形式,即`Map<String, List<String>>`,你可以使用Stream API来实现。这里是一个简单的步骤:
首先,假设你有一个名为`Entity`的类,它有某个属性`name`,你想基于这个属性创建map。例如:
```java
class Entity {
private String name;
// getters and setters...
}
List<Entity> entityList = ... // 假设这是你的实体类列表
```
然后,你可以使用Stream的`collect`方法结合`Collectors.groupingBy`来达到目的:
```java
Map<String, List<Entity>> map = entityList.stream()
.collect(Collectors.groupingBy(Entity::getName, Collectors.toList()));
```
这将按照`Entity`的`name`属性对列表进行分组,每个`name`对应的元素会被收集到一个list里。
如果你想进一步将每个`Entity`对象转换为`String`,可以再对每个list应用`stream()`并转换:
```java
Map<String, List<String>> stringMap = map.entrySet().stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
entry -> entry.getValue().stream()
.map(Entity::getName)
.collect(Collectors.toList())
));
```
现在,`stringMap`就是你想要的`Map<String, List<String>>`形式。
阅读全文