使用addAll在哈希集中添加列表

时间:2011-02-14 22:06:24

标签: java list collections hashset

在java中,我无法使用散列集addAll方法

向哈希集添加列表
List a = new ArrayList();
a.add(20);

List b = new ArrayList();
b.add(30);

Set set = new HashSet ( a );

set.addAll( b);

请帮忙

由于

3 个答案:

答案 0 :(得分:16)

我尝试了你的代码,它对我有用。

但有一件事 - 使用集合的通用版本会更好。这将删除警告。

List<Integer> a = new ArrayList<Integer>();
a.add(20);

List<Integer> b = new ArrayList<Integer>();
b.add(30);

Set<Integer> set = new HashSet<Integer>(a);
set.addAll(b);

答案 1 :(得分:2)

这样可以正常工作,只需要将一个列表添加到集合中,列表和集合之间的重复元素只会添加一次。

比如说,如果你这样做,ArrayList arr有元素2,3,4,HashSet集合有元素2,5,7 set.addAll(arr),然后设置仍然包括2,5,7,3,4。

同样想象一下你有一个ArrayList arr和HashSet集合的场景,其中T是一个包含几个参数的泛型类,那么最终集合中的公共元素将被删除,等于T类中等于方法的重写定义,添加到set中的元素将保留在arraylist中元素的最终集合中。

答案 2 :(得分:0)

    ArrayList<Integer> arr = new ArrayList<>();
    arr.add(20);
    arr.add(30);
    arr.add(40);
    System.out.println(arr); //[20, 30, 40]

    ArrayList<Integer> arr2 = new ArrayList<>();
    arr2.add(10);
    arr2.add(70);
    arr2.add(40);
    
    System.out.println(arr2); //[10, 70, 40]
    arr2.addAll(arr);

    System.out.println(arr2); //[10, 70, 40, 20, 30, 40]

    HashSet<Integer> set = new HashSet<>(arr);
    System.out.println(set); //[20, 40, 30]
    set.addAll(arr2);
    ArrayList<Integer> dummy = new ArrayList<>(set);

    System.out.println(dummy); //[20, 70, 40, 10, 30]