标签:tmp java String TreeMap add way 字符串 listOfPaths 为树
import java.util.*;
class Node {
public static void main(String[] args) {
ArrayList<String> listOfPaths = new ArrayList<String>();
listOfPaths.add("主要材料|钢铁|锌铜板");
listOfPaths.add("主要材料|通风口|cc");
listOfPaths.add("主要材料|压路机");
listOfPaths.add("主要材料|加药装置");
listOfPaths.add("主要材料|加药装置1");
listOfPaths.add("主要材料|钢铁");
listOfPaths.add("主要材料|钢铁|锌铜板1");
listOfPaths.add("工程设备|钢铁|锌铜板");
TreeMap structure = new TreeMap<>();
for (String path : listOfPaths) {
String[] tmp = path.split("\\|", 2); // [ "folder a/", "folder b/file 1"] for first loops step
String way = "";
put(structure, tmp[0], tmp[1], way);
}
List<Material> materials = new ArrayList<>();
print(structure, "", materials);
System.out.println(Arrays.toString(materials.toArray()));
}
private static void put(TreeMap structure, String root, String rest, String way) {
String[] tmp = rest.split("\\|", 2);
TreeMap rootDir = (TreeMap) structure.get(root);
if (rootDir == null) {
rootDir = new TreeMap();
structure.put(root, rootDir);
}
if (tmp.length == 1) { // path end
rootDir.put(tmp[0], null);
} else {
put(rootDir, tmp[0], tmp[1], way);
}
}
private static void print(TreeMap map, String way, List<Material> materials) {
if (map == null || map.isEmpty())
return;
String o = way;
for (Object m : map.entrySet()) {
Material material = new Material();
material.setName((String) ((Map.Entry) m).getKey());
material.setChildren(new ArrayList<>());
if (Objects.equals(way, "")) {
way = (String) ((Map.Entry) m).getKey();
} else {
way += "|" + (String) ((Map.Entry) m).getKey();
}
material.setWay(way);
materials.add(material);
print((TreeMap) ((Map.Entry) m).getValue(), way, material.getChildren());
way = o;
}
}
}
标签:tmp,java,String,TreeMap,add,way,字符串,listOfPaths,为树 来源: https://www.cnblogs.com/txzn/p/16633619.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。