From 074513acdfed38c8537a046801ee5dbc8f01e2eb Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期四, 22 二月 2024 10:06:42 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java | 26 +++++++++++--------------- 1 files changed, 11 insertions(+), 15 deletions(-) diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java index fca97c6..0ac4c2a 100644 --- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java +++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java @@ -6,11 +6,11 @@ import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import java.util.Optional; import java.util.function.BiConsumer; import java.util.function.Function; -import java.util.function.Predicate; /** * Created by vincent on 2023/3/14 @@ -69,23 +69,19 @@ // return result; // } - public static <T> List<T> treeRemove(List<T> data, String condition, - Function<? super T, ? extends String> fetcher, - Function<T, List<T>> childrenGetter, - BiConsumer<T, List<T>> childrenSetter) { - List<T> result = new ArrayList<>(); - Predicate<T> predicate = node -> fetcher.apply(node).contains(condition); - for (T node : data) { - List<T> children = childrenGetter.apply(node); + public static <T> void treeRemove(List<T> list, String condition, Function<? super T, ? extends String> fetcher, Function<T, List<T>> childrenGetter) { + Iterator<T> iterator = list.iterator(); + while (iterator.hasNext()) { + T next = iterator.next(); + List<T> children = childrenGetter.apply(next); if (children != null && !children.isEmpty()) { - List<T> newChildren = treeRemove(children, condition, fetcher, childrenGetter, childrenSetter); - childrenSetter.accept(node, newChildren); - } - if (predicate.test(node)) { - result.add(node); + treeRemove(children, condition, fetcher, childrenGetter); + } else { + if (!fetcher.apply(next).contains(condition)) { + iterator.remove(); + } } } - return result; } /** -- Gitblit v1.9.1