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

发布于 2024-10-17 22:08:04 字数 210 浏览 0 评论 0原文

在java中,我无法使用哈希集addAll方法将列表添加到哈希集

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

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

Set set = new HashSet ( a );

set.addAll( b);

请帮助

谢谢

In java i m not able to add a list to a hashset using hash set addAll method

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

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

Set set = new HashSet ( a );

set.addAll( b);

Please help

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

旧时模样 2024-10-24 22:08:04

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

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

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

I tried your code and it works for me.

One thing though - it would be better to use the generic versions of the collections. This removes the warnings.

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);
梦中楼上月下 2024-10-24 22:08:04

这工作正常,只是如果将列表添加到集合中,则列表和集合之间的重复元素仅添加一次。

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

另请想象这样一个场景,您有一个 ArrayList arr 和 HashSet 集合,其中 T 是包含多个参数的泛型类,然后最终集合中的公共元素将根据 T 类中 equals 方法的重写定义被删除,并且添加到集合中的元素将是保留在数组列表中元素的最终集合中。

This works fine, just that if you add a list to the set, the repeated elements between the list and the set are added just once.

Say for example ArrayList arr has elements 2,3,4 and HashSet set has elements 2,5,7 now if you do
set.addAll(arr), then set still includes 2,5,7,3,4.

Also Imagine a scenario where you have an ArrayList arr and HashSet set where T is a generic class containing several parameters, then common elements in the final set will be removed as per equals method's overridden definition in T class and the element added to set will be persisted in the final set over the element in the arraylist.

故事与诗 2024-10-24 22:08:04

你可以简单地这样做:

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

you can simply do like this :

Set<String> set = new HashSet<String>(list);
噩梦成真你也成魔 2024-10-24 22:08:04
    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]
    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]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文