代码优化 public static T extends BaseScoreItemEntityT S extends BaseScoreTable ListScoreItemConfigVOT S getScoreItemConfigsfinal ListT templateScoreItems
代码优化如下:
public static <T extends BaseScoreItemEntity<T>, S extends BaseScoreTable> List<ScoreItemConfigVO<T, S>> getScoreItemConfigs(final List<T> templateScoreItems,
final Map<String, S> scoreTableMap,
final boolean isTemplate) {
// 将评分项按照所属表ID进行分组
final Map<String, List<T>> templateItemTableGroup = templateScoreItems.stream()
.filter(f -> StringUtils.isNotBlank(f.getTableId()))
.collect(Collectors.groupingBy(BaseScoreItemEntity::getTableId));
// 遍历每个评分表,创建评分项配置对象,并将其添加到结果列表中,构建为评分项配置对象
return templateItemTableGroup.keySet().stream()
.map(key -> createBaseScoreItemConfigVO(templateItemTableGroup.getOrDefault(key, Collections.emptyList()),
convertBaseScoreTableInfo(isTemplate, scoreTableMap.get(key)),
Boolean.TRUE))
.collect(Collectors.toList());
}
/**
* 转换评分表格.
*
* @param isTemplate 是否为模板
* @param scoreTable 评分表格
* @param <T> 所有继承BaseScoreTable(评分表格)的子类
* @return 所有继承BaseScoreTable(评分表格)的子类
*/
public static <T extends BaseScoreTable> T convertBaseScoreTableInfo(final boolean isTemplate,
final T scoreTable) {
// 如果为模板评分表格,则只需要进行数据拷贝,不需要Id属性
if (isTemplate && scoreTable != null) {
scoreTable.setId(null);
}
return scoreTable;
}
主要的优化点有:
- 使用方法引用来替代匿名函数,减少代码量。
- 使用
getOrDefault方法来处理可能为空的Map值,避免使用MapUtils.getObject方法。 - 简化
if条件判断,直接使用scoreTable != null来代替Objects.nonNull(scoreTable)
原文地址: http://www.cveoy.top/t/topic/iSHf 著作权归作者所有。请勿转载和采集!