有没有办法将多个列表的内容放入Set? (消除重复)
例如列表,列表,列表的内容都放在一个Set中。 (假设它们属于同一类型)
答案 0 :(得分:2)
你当然可以。
Set将添加每个列表中的所有元素,然后根据对象equals
和hashCode()
方法删除任何重复的对象。 (实现一个时,你应该实现另一个。)
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);