热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用int数组的HashSet用法

如何解决《使用int数组的HashSet用法》经验,为你挑选了1个好方法。

因为我有一个包含重复项的int数组的ArrayList,所以我想使用HashSet.不幸的是,我无法按照自己的意愿使用HashSet:

System.out.print("\nTESTs\n");
    ArrayList list = new ArrayList();
    list.add(new int[]{1,2,3});
    list.add(new int[]{5,1,1});
    list.add(new int[]{1,2,3});//duplicate
    list.add(new int[]{5,1,3});

    Set set = new HashSet(list);
    System.out.println("Size of the set = "+set.size());

    ArrayList arrayList = new ArrayList(set);
    System.out.println("Size of the arrayList = "+arrayList.size());

    for (int[] array:arrayList){
        System.out.println(Arrays.toString(array));
    }

它导致:

Size of the set = 4
Size of the arrayList = 4
[1, 2, 3]
[1, 2, 3] // duplicate still here
[5, 1, 1]
[5, 1, 3]

有谁能告诉我我哪里错了?

在此先感谢Dominique(java新手)



1> Eran..:

数组不会在类中重写hashCodeequals实现Object,因此,HashSet只有当a1 == a2时,两个数组a1和a2才会被视为彼此相同,在您的情况下为false.

如果使用ArrayLists而不是数组,则问题将得到解决,因为ArrayLists相等性由列表成员的相等性(以及它们出现的顺序)决定.


推荐阅读
author-avatar
爱娟一辈子-_709
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有