//先查询出所有的数据
List<table> list = kineticEnergyFileImportService.getguzhang(ELECTRICALTYPE); Set<String> roots = new LinkedHashSet<>(); Map<String, Set<String>> map = new HashMap<>(); for (table faultdictionary : list) { //获取ELECTRICAL_GUAR字段添加到roots String electricalguar = faultdictionary.getELECTRICALGUAR(); roots.add(electricalguar); //获取type1,type2,type3 String type1 = faultdictionary.getTYPE1(); String type2 = faultdictionary.getTYPE2(); String type3 = faultdictionary.getTYPE3(); //获取numcode String numbercode = faultdictionary.getNUMBERCODE(); // 根据electricalguar获取对应的Set对象,如果该对象不存在,则创建一个新的LinkedHashSet对象, // 并将其存储到map中,并返回该对象,如果已经存在,则直接返回该对象。然后将type1添加到获取到的Set对象中。 Set<String> set = map.computeIfAbsent(electricalguar, key -> new LinkedHashSet<>()); set.add(type1); set = map.computeIfAbsent(electricalguar + "-" + type1, key -> new LinkedHashSet<>()); set.add(type2); set = map.computeIfAbsent(electricalguar + "-" + type1 + "-" + type2, key -> new LinkedHashSet<>()); set.add(type3); set = map.computeIfAbsent(electricalguar + "-" + type1 + "-" + type2 + "-" + type3, key -> new LinkedHashSet<>()); set.add(numbercode); } 根据根节点集合roots和存储子节点信息的map生成一个树形结构的数据结构,并将其保存到一个List中。具体实现过程如下:首先使用roots.stream()将roots转换为一个Stream,然后使用map()方法对每个根节点进行处理。对于每个根节点k,使用getChildren(map, k)方法获取其对应的子节点集合,并使用new Node(k, getChildren(map, k))将其封装成一个Node对象。然后使用collect(Collectors.toList())将所有的Node对象保存到一个List中,具体实现是将Stream转换为List<Node>类型。 List<Node> nodes = roots.stream().map(k -> new Node(k, getChildren(map, k))).collect(Collectors.toList()); 最终返回的List<Node>就是树形结构的数据,其中每个Node对象对应一个节点,包含节点名称和子节点集合 return Result.ok(nodes.get(0));
标签:返回,map,set,java,electricalguar,new,树型,type1,roots From: https://blog.51cto.com/u_16158939/6464739