如何在网上接做网站的小项目,虾米音乐 wordpress,三丰云免费服务器,wordpress 4.6.2文章目录 前言一、需求二、我的写法 三、优化后的写法总结 前言
在工作中遇到了一个需求#xff0c;很费劲的写了出来#xff0c;但是导师看了直摇头#xff0c;一顿操作帮我修改了#xff0c;修改之后代码非常简洁#xff0c;现对这部分做一个回顾总结。 一、需求
需求… 文章目录 前言一、需求二、我的写法 三、优化后的写法总结 前言
在工作中遇到了一个需求很费劲的写了出来但是导师看了直摇头一顿操作帮我修改了修改之后代码非常简洁现对这部分做一个回顾总结。 一、需求
需求大概为有一个a表 表中有一个id字段关联另一张表bid可能不止一个多个id用分隔 需要取出b表中对应的数据并将它们拼接起来。
二、我的写法
首先id是以分割的那么我使用了spilt函数将字符串按逗号分隔成了字符串数组 String[] parts projectDO.getSpecificCommodityIds().split(,);然后因为我们这个项目中b表的数据非常小这样就没有必要进行连表查询直接查一次出来转换为map集合 ListSpecificDockCommodityDO listspecificDockCommodityDAO.selectAll();MapLong, String map list.stream().collect(Collectors.toMap(SpecificDockCommodityDO::getSpecificDockCommodityId, SpecificDockCommodityDO::getSpecificDockCommodityName));然后只要拿着parts中的id去map集合中找就行然后找到的数据再进行一个拼接 for(int i0;iparts.length;i)
{if(map.get(Long.parseLong((parts[i]))).isEmpty()){commoditymap.get(Long.parseLong((parts[i])));commodity,;}
}由于最后逗号需要去除所以还要加一个判断 if (commodity.endsWith(,)) {commodity commodity.substring(0, commodity.length() - 1);
}三、优化后的写法 //获取组装商品对接名称
if (!projectDO.getSpecificCommodityIds().isEmpty()) {
String commodityNames Arrays.stream(projectDO.getSpecificCommodityIds().split(,))
.map(commodityById::get).filter(Objects::nonNull).collect(Collectors.joining(,));
}可以看到直接用.map将分割好的commodityid当作参数传入了commodityById的get方法中同时使用filter过滤掉了为空的数据 最后利用joining函数把他们按照逗号分隔拼接起来便可,这样操作更加简洁简化了代码而且更加高效
总结
以后对这种集合还有字符串的操作 可以优先考虑使用到stream流来进行操作