首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个集合合并为一个集合,并删除重复的集合

将多个集合合并为一个集合,并删除重复的集合
EN

Stack Overflow用户
提问于 2011-06-10 10:55:59
回答 6查看 17.3K关注 0票数 3

我有m个集合,可以使用array或arraylist来存储。这些集合之间存在重叠。我想把这m个集合合并成一个集合,而那些重复的元素只会占据组合集合中的一个位置。我应该使用哪种数据结构和操作来构造组合集。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-06-10 11:02:47

下面的代码将为您完成此操作:

代码语言:javascript
复制
    Set set = new HashSet();
    ArrayList list = new ArrayList();
    ArrayList list2 = new ArrayList(); //etc
    Object[] array = new Object[]{};
    Object[] array2 = new Object[]{}; // etc
    set.addAll(list);
    set.addAll(list2);
    set.addAll(Arrays.asList(array));
    set.addAll(Arrays.asList(array2));
    // Call addAll as many times as you like

set现在包含所有唯一值,每个值一次

票数 2
EN

Stack Overflow用户

发布于 2011-06-10 11:23:57

请参阅: java.util.Set.addAll(Collection):的javadoc

代码语言:javascript
复制
/**
 * Adds all of the elements in the specified collection to this set if
 * they're not already present (optional operation).  If the specified
 * collection is also a set, the <tt>addAll</tt> operation effectively
 * modifies this set so that its value is the <i>union</i> of the two
 * sets.  The behavior of this operation is undefined if the specified
 * collection is modified while the operation is in progress.
票数 4
EN

Stack Overflow用户

发布于 2016-05-05 22:58:00

代码语言:javascript
复制
/**
 * Join multiple sets into one.
 */
@SafeVarargs
private final <T> Set<T> join(Set<T>... sets)
{
    Set<T> result = new HashSet<>();
    if (sets == null)
        return result;

    for (Set<T> set : sets)
    {
        if (set != null)
            result.addAll(set);
    }
    return result;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6301510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档