java8对象转换map<String,List<对象>>
时间: 2024-11-30 07:19:26 浏览: 1
在Java 8中,如果你有一个对象列表,并想将其转换为Map,其中每个对象的某个属性(通常是其唯一的标识符)作为键,对象本身或其部分字段作为值,你可以使用`Collectors.toMap`函数结合Lambda表达式来完成这个过程。假设我们有一个User对象列表,你想按username字段进行分组:
```java
class User {
private String username;
private String otherInfo;
// getters and setters...
}
List<User> userList = ...; // 你拥有的User对象列表
Map<String, List<User>> userMap = userList.stream()
.collect(Collectors.toMap(User::getUsername,
u -> new ArrayList<>(),
(oldList, newUser) -> { oldList.add(newUser); return oldList; },
HashMap::new));
```
这里的`User::getUsername`是一个方法引用,表示获取User对象的username属性作为键;`u -> new ArrayList<>()`创建一个新的空列表作为value的初始值;如果键已经存在于Map中,`oldList.add(newUser)`会合并新的用户到现有的列表中;`HashMap::new`指定了新Map的构造器。
阅读全文