From f84448a10d99a0fa82e71088051e3517637edaa7 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期二, 09 四月 2024 15:11:52 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java | 40 +++++++++++++++++++++++++++++++++++++++- 1 files changed, 39 insertions(+), 1 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 1881c3b..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,6 +6,7 @@ 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; @@ -39,13 +40,50 @@ if (parentId.equals(dParentId)) { R dId = idMapper.apply(d); List<T> children = toTreeData(data, dId, parentIdMapper, idMapper, consumer); - consumer.accept(d, children); + if(children.size() > 0) { + consumer.accept(d, children); + } result.add(d); } } 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<>(); +// for (T node : data) { +// List<T> children = childrenGetter.apply(node); +// +// if (children != null && !children.isEmpty()) { +// List<T> newChildren = treeRemove(children, condition, fetcher, childrenGetter, childrenSetter); +// childrenSetter.accept(node, newChildren); +// } +// +// if (fetcher.apply(node).contains(condition)) { +// result.add(node); +// } +// } +// return result; +// } + + 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()) { + treeRemove(children, condition, fetcher, childrenGetter); + } else { + if (!fetcher.apply(next).contains(condition)) { + iterator.remove(); + } + } + } + } + /** * 鏁扮粍鍊掑簭 * @param bytes -- Gitblit v1.9.1