weixin_49120819 2022-07-20 01:29 采纳率: 100%
浏览 136
已结题

将集合转换成具有层级结构的map、写了一天了没想出怎么实现、有没有大lao9⃣️9⃣️我!!

img


将集合转换成具有层级结构的map、写了一天了没想出怎么实现、有没有大lao9⃣️9⃣️我!!(正文非得30个字么,我上哪儿编30个字去)

  • 写回答

10条回答 默认 最新

  • 瘦死的黑骆驼 2022-07-20 10:19
    关注
    
    public static void main(String[] args) {
            List<String> pathList = Arrays.asList("/etc/hosts", "/etc/kubernetes/ssl/certs", "/root");
            Map<String, Object> resultMap = pathListToMap(pathList);
            System.out.println(resultMap);
        }
    
        public static Map<String, Object> pathListToMap(List<String> pathList) {
            Map<String, Object> resultMap = new HashMap<>();
            pathList.forEach(path -> {
                String[] pathSplitArray = path.split("/");
                // 每个目录循环时需要记录上层目录的对象
                Map<String, Object> parentObj = null;
                for (int i = 0; i < pathSplitArray.length; i++) {
                    if (StringUtils.isEmpty(pathSplitArray[i])) {
                        continue;
                    }
                    parentObj = parentObj == null ? resultMap : parentObj;
                    Object currentObj = parentObj.get(pathSplitArray[i]);
                    if (currentObj == null) {
                        currentObj = new HashMap<>();
                        parentObj.put(pathSplitArray[i], currentObj);
                    }
                    parentObj = (Map) currentObj;
                }
            });
            return resultMap;
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(9条)

报告相同问题?

问题事件

  • 系统已结题 7月28日
  • 已采纳回答 7月20日
  • 创建了问题 7月20日