From b1337edc30ab5532710133d46cf70ff32f473c00 Mon Sep 17 00:00:00 2001 From: Liang Long <54536224+GRain-long@users.noreply.github.com> Date: Tue, 23 Jun 2020 18:41:14 +0800 Subject: [PATCH] add intersectionDistinct MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加交集去重方法 --- .../cn/hutool/core/collection/CollUtil.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java index f11f25171..576adabe6 100644 --- a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java @@ -266,6 +266,39 @@ public class CollUtil { } return intersection; } + + /** + * 多个集合的交集
+ * 针对一个集合中存在多个相同元素的情况,只保留一个
+ * 例如:集合1:[a, b, c, c, c],集合2:[a, b, c, c]
+ * 结果:[a, b, c],此结果中只保留了一个c + * + * @param 集合元素类型 + * @param coll1 集合1 + * @param coll2 集合2 + * @param otherColls 其它集合 + * @return 并集的集合,返回 {@link LinkedHashSet} + */ + @SafeVarargs + public static Set intersectionDistinct(Collection coll1, Collection coll2, Collection... otherColls) { + final Set result; + if (isEmpty(coll1)) { + result = new LinkedHashSet<>(); + } else { + result = new LinkedHashSet<>(coll1); + } + + if (isNotEmpty(coll2)) { + result.retainAll(coll2); + } + + if (ArrayUtil.isNotEmpty(otherColls)) { + for (Collection otherColl : otherColls) { + result.retainAll(otherColl); + } + } + return result; + } /** * 两个集合的差集