From 390e5d839b589465e29b8065f1bfaa2ceaadf864 Mon Sep 17 00:00:00 2001 From: luming Date: Wed, 19 May 2021 19:54:49 +0800 Subject: [PATCH] init project --- src/main/java/Main.java | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index f0af494..dba1ed5 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -5,9 +5,8 @@ import org.apache.commons.collections.CollectionUtils; import java.io.File; import java.io.FileInputStream; import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; public class Main { @@ -15,10 +14,15 @@ public class Main { String path = ClassLoader.getSystemClassLoader().getResource("data.json").getPath(); String s = readToString(path).trim(); List types = JSON.parseArray(s, Type.class); - List types1 = builldTree(types); + List typeTree = builldTree(types); // 如何取值 id为 842362469438455808 的所有父id需要保持顺序 - System.out.println(types1); + Deque stack = new ArrayDeque<>(); + AtomicBoolean flag = new AtomicBoolean(false); + contractTypeDFS(842362469438455808L, typeTree, stack, flag); + System.out.println(stack); } + + public static List builldTree(List list){ ArrayList tree = Lists.newArrayList(); if(CollectionUtils.isNotEmpty(list)){ @@ -59,4 +63,23 @@ public class Main { return null; } } + // 遍历分类树 + private static void contractTypeDFS(Long id, List contractTypeTree, Deque stack, AtomicBoolean flag) { + for (Type type : contractTypeTree) { + if (flag.get() == true) { + break; + } + if (Objects.equals(id, type.getId())) { + flag.set(true); + stack.push(type.getId()); + break; + } + stack.push(type.getId()); + if (CollectionUtils.isEmpty(type.getChildList())) { + stack.pop(); + } else { + contractTypeDFS(id, type.getChildList(), stack, flag); + } + } + } }