代码优化如下:\n\njava\npublic static \u003CT extends BaseScoreItemEntity\u003CT\u003E, S extends BaseScoreTable\u003E List\u003CScoreItemConfigVO\u003CT, S\u003E\u003E getScoreItemConfigs(final List\u003CT\u003E templateScoreItems,\n final Map\u003CString, S\u003E scoreTableMap,\n final boolean isTemplate) {\n // 将评分项按照所属表ID进行分组\n final Map\u003CString, List\u003CT\u003E\u003E templateItemTableGroup = templateScoreItems.stream()\n .filter(f -> StringUtils.isNotBlank(f.getTableId()))\n .collect(Collectors.groupingBy(BaseScoreItemEntity::getTableId));\n\n // 遍历每个评分表,创建评分项配置对象,并将其添加到结果列表中,构建为评分项配置对象\n return templateItemTableGroup.keySet().stream()\n .map(key -> createBaseScoreItemConfigVO(templateItemTableGroup.getOrDefault(key, Collections.emptyList()),\n convertBaseScoreTableInfo(isTemplate, scoreTableMap.get(key)),\n Boolean.TRUE))\n .collect(Collectors.toList());\n}\n\n/**\n * 转换评分表格.\n *\n * @param isTemplate 是否为模板\n * @param scoreTable 评分表格\n * @param \u003CT\u003E 所有继承BaseScoreTable(评分表格)的子类\n * @return 所有继承BaseScoreTable(评分表格)的子类\n */\npublic static \u003CT extends BaseScoreTable\u003E T convertBaseScoreTableInfo(final boolean isTemplate,\n final T scoreTable) {\n // 如果为模板评分表格,则只需要进行数据拷贝,不需要Id属性\n if (isTemplate && scoreTable != null) {\n scoreTable.setId(null);\n }\n return scoreTable;\n}\n\n\n主要的优化点有:\n\n1. 使用方法引用来替代匿名函数,减少代码量。\n2. 使用getOrDefault方法来处理可能为空的Map值,避免使用MapUtils.getObject方法。\n3. 简化if条件判断,直接使用scoreTable != null来代替Objects.nonNull(scoreTable)。

Java 代码优化:使用 Stream API 和 方法引用简化评分项配置生成

原文地址: https://www.cveoy.top/t/topic/qyFM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录