From b9f987ca7a4154a34f605c046eadbf455d6981e5 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期五, 11 九月 2026 13:41:50 +0800
Subject: [PATCH] 【市一】同步数据
---
ruoyi-common/src/main/java/com/ruoyi/common/utils/ArrayListUtils.java | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 58 insertions(+), 0 deletions(-)
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/ArrayListUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ArrayListUtils.java
new file mode 100644
index 0000000..0b3d55d
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ArrayListUtils.java
@@ -0,0 +1,58 @@
+package com.ruoyi.common.utils;
+
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+public class ArrayListUtils {
+
+ /**
+ * 鏍规嵁ID灏嗕袱涓狶ist鎷嗗垎涓猴細浠匧ist1鐙湁銆佷粎List2鐙湁銆佷袱鑰呭叡鏈�
+ *
+ * @param list1 鍒楄〃1
+ * @param list2 鍒楄〃2
+ * @param idExtractor ID鎻愬彇鍑芥暟
+ * @return Map鍖呭惈涓変釜Key: "onlyIn1", "onlyIn2", "common"
+ */
+ public static <T, K> Map<String, List<T>> splitListsById(List<T> list1, List<T> list2, Function<T, K> idExtractor) {
+ // 1. 鎻愬彇ID闆嗗悎锛岀敤浜庡揩閫熷垽鏂瓨鍦ㄦ��
+ Set<K> ids1 = list1.stream().map(idExtractor).collect(Collectors.toSet());
+ Set<K> ids2 = list2.stream().map(idExtractor).collect(Collectors.toSet());
+
+ // 2. 璁$畻ID灞傞潰鐨勫樊闆嗗拰浜ら泦
+ Set<K> onlyIn1Ids = new HashSet<>(ids1);
+ onlyIn1Ids.removeAll(ids2); // List1鐙湁鐨処D
+
+ Set<K> onlyIn2Ids = new HashSet<>(ids2);
+ onlyIn2Ids.removeAll(ids1); // List2鐙湁鐨処D
+
+ Set<K> commonIds = new HashSet<>(ids1);
+ commonIds.retainAll(ids2); // 鍏辨湁鐨処D
+
+ // 3. 鏍规嵁ID杩囨护鍘熷瀵硅薄鍒楄〃
+ List<T> onlyIn1 = list1.stream()
+ .filter(item -> onlyIn1Ids.contains(idExtractor.apply(item)))
+ .collect(Collectors.toList());
+
+ List<T> onlyIn2 = list2.stream()
+ .filter(item -> onlyIn2Ids.contains(idExtractor.apply(item)))
+ .collect(Collectors.toList());
+
+ // 娉ㄦ剰锛氬叡鏈夐儴鍒嗛�氬父鍚堝苟涓や釜鍒楄〃涓殑鍏冪礌锛屾垨鑰呭彧鍙栧叾涓竴涓��
+ // 杩欓噷绛栫暐鏄細淇濈暀list1鍜宭ist2涓墍鏈塈D閲嶅悎鐨勫璞★紙濡傛灉涓氬姟瑕佹眰鍘婚噸鎴栧悎骞跺璞″睘鎬э紝闇�棰濆澶勭悊锛�
+ List<T> common = new ArrayList<>();
+ common.addAll(list1.stream()
+ .filter(item -> commonIds.contains(idExtractor.apply(item)))
+ .collect(Collectors.toList()));
+// common.addAll(list2.stream()
+// .filter(item -> commonIds.contains(idExtractor.apply(item)))
+// .collect(Collectors.toList()));
+
+ Map<String, List<T>> result = new HashMap<>();
+ result.put("onlyIn1", onlyIn1);
+ result.put("onlyIn2", onlyIn2);
+ result.put("common", common);
+
+ return result;
+ }
+}
--
Gitblit v1.9.3