正常工作内容,
我先是得到一个List<Object1>
现在想要将它转换成List<Object2>
,
然后我就用了Lists.Transform(xxx)
,写完后,idea提示我可以重构。
就成了第二种形式。
mark一下。
原代码:
List<ChannelAcquireDetailResDTO> result;
List<InvoiceSettingRuleBO> allInvoiceChannels = settingRuleService.getAllInvoiceChannels();
if (CollectionUtils.isEmpty(allInvoiceChannels)) {
return Result.error(ErrorCode.DATA_NOT_EXIST);
}
result = Lists
.transform(allInvoiceChannels, invoiceSettingRuleBO -> {
InvoiceChannelModel invoiceChannelModel = JsonUtil
.json2Object(invoiceSettingRuleBO.getRuleValue(), InvoiceChannelModel.class);
ChannelAcquireDetailResDTO temp = Convert
.convert(ChannelAcquireDetailResDTO.class, invoiceChannelModel);
temp.setId(invoiceSettingRuleBO.getId());
temp.setRemark(invoiceSettingRuleBO.getRemark());
temp.setIsDefalt(StringUtil
.equal(invoiceSettingRuleBO.getRuleExt().toLowerCase(), "default"));
return temp;
});
按照IDEA提示后的转换:
result = Lists
.transform(allInvoiceChannels, InvoiceSettingController::apply);
整个成了提出来成了一个 apply 方法。
自动提出来的代码如下:
private static ChannelAcquireDetailResDTO apply(InvoiceSettingRuleBO invoiceSettingRuleBO) {
InvoiceChannelModel invoiceChannelModel = JsonUtil
.json2Object(invoiceSettingRuleBO.getRuleValue(), InvoiceChannelModel.class);
ChannelAcquireDetailResDTO temp = Convert
.convert(ChannelAcquireDetailResDTO.class, invoiceChannelModel);
temp.setId(invoiceSettingRuleBO.getId());
temp.setRemark(invoiceSettingRuleBO.getRemark());
temp.setIsDefalt(StringUtil
.equal(invoiceSettingRuleBO.getRuleExt().toLowerCase(), "default"));
return temp;
}
跟原来没有什么不同。
本文主要记录一下 ::
运算符的应用。
@2021年2月19日 补充:
将一个list转为Map<>的写法:
Map<Integer, Long> collect = requiredItemList.stream().collect(Collectors
.toMap(item -> item.getRequiredItemEnumCode(), item -> item.getConfigId()));