我写了一个关于将基本映射转换为另一个结构映射的逻辑,但是SonarLint评论它需要重构,这里是代码:
public static Map<List<String>, String> toStockMap(List<Map<String, Object>> rows) {
Map<List<String>, String> stockMap = new HashMap<>();
if (CollectionUtils.isEmpty(rows)) {
return stockMap;
}
for (Map<String, Object> row : rows) {
String stock = null;
String itemId = null;
String modelId = null;
for (Map.Entry<String, Object> cell : row.entrySet()) {
if (cell.getKey().equals("stock")) {
stock = cell.getValue().toString();
}
if (cell.getKey().equals("itemid")) {
itemId = cell.getValue().toString();
}
if (cell.getKey().equals("modelid")) {
modelId = cell.getValue().toString();
}
}
if (stock != null && itemId != null && modelId != null) {
stockMap.put(Arrays.asList(modelId, itemId), stock);
}
}
return stockMap;
}
我应该如何改进呢?谢谢
最佳答案
您不需要枚举row
entrySet 来检查键是否存在。你可以大大简化它,比如
for (Map<String, Object> row : rows) {
Object stock = row.get("stock");
Object itemId = row.get("itemid");
Object modelId = row.get("modelid");
if (stock != null && itemId != null && modelId != null) {
stockMap.put(Arrays.asList(modelId.toString(), itemId.toString()),
stock.toString());
}
}
关于java - 如何重构 map 转换操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57863489/