Java 如何重构映射转换操作

Java 如何重构映射转换操作,java,Java,我写了一个关于将基本映射转换为另一个结构映射的逻辑,但是Sonarint指出它需要重构,下面是代码: public static Map<List<String>, String> toStockMap(List<Map<String, Object>> rows) { Map<List<String>, String> stockMap = new HashMap<>(); if (Collec

我写了一个关于将基本映射转换为另一个结构映射的逻辑,但是Sonarint指出它需要重构,下面是代码:

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;
}
以下为Sonarint评论:


我应该如何改进它?谢谢

您不需要枚举行入口集来检查是否存在键。你可以大大简化它,比如

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());
    }
}

第71行是哪一部分?