当前位置: 首页 > 图灵资讯 > 技术篇> java返回树型结构

java返回树型结构

来源:图灵教育
时间:2023-06-13 09:22:13

////首先查询所有数据

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对象。然后使用collecttctt(Collectors.toList())将所有Node对象保存到List中,具体实现是将Stream转换为Listt<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));