public static String getDictValue(String dictType, String dictLabel, String separator) { StringBuilder propertyString = new StringBuilder(); List<SysDictData> datas = getDictCache(dictType); if (containsAny(separator, dictLabel) && StringUtils.isNotEmpty(datas)) { for (SysDictData dict : datas) { for (String label : dictLabel.split(separator)) { if (label.equals(dict.getDictLabel())) { propertyString.append(dict.getDictValue()).append(separator); break; } } } } else { for (SysDictData dict : datas) { if (dictLabel.equals(dict.getDictLabel())) { return dict.getDictValue(); } } } return stripEnd(propertyString.toString(), separator); } 优化这段代码
时间: 2024-02-10 07:17:11 浏览: 113
首先,建议使用Java8的Stream API来简化代码。
代码优化建议如下:
```
public static String getDictValue(String dictType, String dictLabel, String separator) {
List<SysDictData> datas = getDictCache(dictType);
if (containsAny(separator, dictLabel) && StringUtils.isNotEmpty(datas)) {
return datas.stream()
.filter(dict -> Arrays.stream(dictLabel.split(separator)).anyMatch(label -> label.equals(dict.getDictLabel())))
.map(SysDictData::getDictValue)
.collect(Collectors.joining(separator));
} else {
return datas.stream()
.filter(dict -> dictLabel.equals(dict.getDictLabel()))
.map(SysDictData::getDictValue)
.findFirst()
.orElse(null);
}
}
```
这段代码使用Stream API来替换了原来的for循环,让代码更加简洁易读。同时,使用`.findFirst().orElse(null)`来代替原来的循环来取第一个元素,让代码更加高效。
阅读全文