List<Object> 转 Map<Long,Object2> java8 实现
时间: 2023-10-24 22:16:16 浏览: 91
java8 streamList转换使用详解
5星 · 资源好评率100%
好的,你想要使用Java 8的Stream API来实现将List<Object>转换成Map<Long, Object2>,是吗?假设Object中有一个属性id,Object2中有一个属性id,两个id的类型均为Long,可以按照以下方式实现:
```java
List<Object> list = new ArrayList<>();
Map<Long, Object2> map = list.stream()
.collect(Collectors.toMap(Object::getId, obj -> {
Object2 obj2 = new Object2();
obj2.setId(obj.getId());
// 将Object对象的属性转换为Object2对象的属性
// ...
return obj2;
}));
```
以上代码中,我们使用了Stream API的collect方法,将List<Object>转换成了Map<Long, Object2>。toMap方法的第一个参数是key的提取函数,使用Object::getId表示使用Object对象的id属性作为key。第二个参数是value的提取函数,使用lambda表达式来创建一个新的Object2对象,并将Object对象的属性转换为Object2对象的属性,最终返回该Object2对象作为value。
需要注意的是,如果List<Object>中有重复的id属性值,那么在转换成Map<Long, Object2>的过程中会抛出IllegalStateException异常,因为Map中不能有重复的key值。如果确定List<Object>中不存在重复的id属性值,可以使用toMap方法的第三个参数来指定当出现重复key值时的处理方式。
阅读全文