From ad847473401730c14a5d667bd06afcb7d4575eb6 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期四, 22 二月 2024 09:33:40 +0800
Subject: [PATCH] #
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java | 44 +++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 43 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..fca97c6 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
@@ -10,6 +10,7 @@
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
@@ -39,13 +40,54 @@
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> 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);
+ 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);
+ }
+ }
+ return result;
+ }
+
/**
* 鏁扮粍鍊掑簭
* @param bytes
--
Gitblit v1.9.1