【问题标题】:add a list in a hashset using addAll使用 addAll 在哈希集中添加列表
【发布时间】:2011-06-27 05:42:21
【问题描述】:

在 java 中,我无法使用 hash set addAll 方法将列表添加到 hashset

List a = new ArrayList();
a.add(20);

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

Set set = new HashSet ( a );

set.addAll( b);

请帮忙

谢谢

【问题讨论】:

    标签: java list collections hashset


    【解决方案1】:
        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]
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      Set<String> set = new HashSet<String>(list);
      

      【讨论】:

        【解决方案3】:

        这很好用,只是如果你将一个列表添加到集合中,列表和集合之间的重复元素只会添加一次。

        例如 ArrayList arr 有元素 2,3,4 并且 HashSet set 现在有元素 2,5,7 如果你这样做 set.addAll(arr),那么set仍然包含2,5,7,3,4。

        另外想象一个场景,你有一个 ArrayList arr 和 HashSet 集合,其中 T 是一个包含多个参数的泛型类,那么最终集合中的公共元素将根据等于方法在 T 类中的覆盖定义被删除,并将元素添加到set 将在 arraylist 中的元素上保留在最终集合中。

        【讨论】:

          【解决方案4】:

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

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

          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);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-03-18
            • 1970-01-01
            • 1970-01-01
            • 2015-11-20
            • 1970-01-01
            • 1970-01-01
            • 2014-09-27
            相关资源
            最近更新 更多