放入集合中的多个列表的内容

时间:2014-04-15 08:21:54

标签: java

有没有办法将多个列表的内容放入Set? (消除重复)

例如列表,列表,列表的内容都放在一个Set中。 (假设它们属于同一类型)

2 个答案:

答案 0 :(得分:2)

你当然可以。

Set将添加每个列表中的所有元素,然后根据对象equalshashCode()方法删除任何重复的对象。 (实现一个时,你应该实现另一个。)

List<Object> listA = new ArrayList<Object>();
List<Object> listB = new ArrayList<Object>();
List<Object> listC = new ArrayList<Object>();

Set<Object> set = new HashSet<Object>();
set.addAll(listA);
set.addAll(listB);
set.addAll(listC);

编辑:做了一些测试

这是一个小测试方法,显示了这一点:

public static void main(final String[] args) {
    final String one = new String("one");
    final String two = new String("two");
    final String three = new String("three");
    final String four = new String("four");

    final List<String> listA = new ArrayList<String>();
    listA.add(one);
    listA.add(two);

    final List<String> listB = new ArrayList<String>();
    listB.add(two);
    listB.add(three);

    final List<String> listC = new ArrayList<String>();
    listC.add(three);
    listC.add(four);

    final Set<String> set = new HashSet<String>();
    set.addAll(listA);
    set.addAll(listB);
    set.addAll(listC);

    System.out.println(set);
}

输出是:

  

[二,一,三,四]

这表明实现工作正常,但您应该记住,其余对象的顺序可能不是您想要或期望的。

答案 1 :(得分:0)

是的,您可以声明一组列表,如果这就是您要查找的内容。

Set<List<SomeType>> mySet = new Set<>();
mySet.add(listA);
mySet.add(listB);
mySet.add(listC);