Map<String, String> rhrMap = rhrList.stream().collect(Collectors.toMap(Rhr::getFileNo, Rhr::getId, (v1, v2) -> v2));
时间: 2024-03-12 17:27:47 浏览: 137
这段代码使用了Java 8中的Stream API,用于将一个Rhr对象列表(rhrList)转换为一个Map对象(rhrMap),其中Map的key是Rhr对象的fileNo属性,value是Rhr对象的id属性。如果有多个Rhr对象的fileNo属性相同,则使用lambda表达式中的第三个参数进行处理,保留v2的值。简单来说,这段代码的作用是将rhrList中的Rhr对象按照fileNo属性转换为一个Map对象。
相关问题
Map<Long, String> idMap = list.stream().collect(Collectors.toMap(EntryDeliveryBillMaterialUpdateBatchNoVO::getId, EntryDeliveryBillMaterialUpdateBatchNoVO::getBatchNo)); Map<Long,Date> dateMap = list.stream().collect(Collectors.toMap(EntryDeliveryBillMaterialUpdateBatchNoVO::getId, EntryDeliveryBillMaterialUpdateBatchNoVO::getProduceDate));怎么转成一个map
要将这两个 `Map` 合并为一个,可以使用 `Stream` 的 `collect` 方法,结合 `Collectors.toMap` 和 lambda 表达式来实现。具体代码如下:
```
Map<Long, Map<String, Object>> resultMap = list.stream().collect(Collectors.toMap(
EntryDeliveryBillMaterialUpdateBatchNoVO::getId,
vo -> {
Map<String, Object> subMap = new HashMap<>();
subMap.put("batchNo", vo.getBatchNo());
subMap.put("produceDate", vo.getProduceDate());
return subMap;
},
(map1, map2) -> {
map1.putAll(map2);
return map1;
}
));
```
上述代码中,使用 `Collectors.toMap` 将 `idMap` 和 `dateMap` 合并为一个 `Map`,其中 `EntryDeliveryBillMaterialUpdateBatchNoVO::getId` 作为 `keyMapper`,返回 `id` 作为 `key`;lambda 表达式 `vo -> {...}` 作为 `valueMapper`,返回一个包含 `batchNo` 和 `produceDate` 的子 `Map` 作为 `value`。由于 `Map` 的 `merge` 方法只能用于合并相同类型的 `Map`,所以在合并时需要提供一个 `mergeFunction`,将两个子 `Map` 合并为一个。这里使用的是 `(map1, map2) -> {...}` lambda 表达式,将两个子 `Map` 中的所有键值对合并到第一个子 `Map` 中,然后返回第一个子 `Map`。
Map<String, SgRhr> rhrIdMapEntity = sgRhrs.stream().collect(Collectors.toMap(SgRhr::getId, Function.identity()));
这段代码使用 Java 8 中的流(Stream)和Lambda表达式实现了将一个包含SgRhr对象的List转换为Map<String, SgRhr>,其中Map的key为SgRhr对象的id属性,value为对象本身。具体实现使用了Collectors.toMap方法,该方法接受两个参数,第一个参数是Map的key生成函数,这里使用了SgRhr::getId方法引用,第二个参数是Map的value生成函数,这里使用了Function.identity()方法引用,表示将对象本身作为value。最终返回的是生成的Map对象。
阅读全文