java.util.stream.Collectors也可以用来轻松地收集对象字段作为Map的关键字和值。这怎么做
时间: 2024-12-08 15:21:15 浏览: 10
java使用stream对日期排序
在Java 8及更高版本中,你可以使用`Collectors.toMap()`方法结合`Stream` API,来创建一个Map,其中对象的某个属性作为键,另一个属性或者对象本身作为值。例如,假设有一个User类,有两个属性id和name,你可以这样做:
```java
class User {
private int id;
private String name;
// getters and setters...
}
List<User> userList = ...; // 用户列表
Map<Integer, User> userMap = userList.stream()
.collect(Collectors.toMap(User::getId, Function.identity()));
```
这里,`User::getId`是一个方法引用,表示取每个User对象的id作为键,而`Function.identity()`则表示直接使用对象本身作为值(如果需要自定义值,可以传递一个函数`Function<User, YourValueType>`替换`Function.identity()`)。
这样,最终得到的`userMap`就是一个键为用户ID,值为User对象的新Map。
阅读全文