首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用HashSet和Brute Force在数组中进行重复搜索

使用HashSet和Brute Force在数组中进行重复搜索
EN

Stack Overflow用户
提问于 2019-02-21 03:34:56
回答 3查看 169关注 0票数 -1

我只是在尝试一个简单的程序来查找给定数组中的重复项。

代码语言:javascript
复制
/* Using HashSet */
int[] arrays = {1,2,4,5,4,2};
Set<Integer> hs = new HashSet<Integer>();
for(int ar:arrays)
{
    if(!hs.add(ar))
    {
        System.out.println("Dupicate is:" +ar);             
    }           
}       

/* Nested for loop */
int arraySearch[] = {2,2,3,4,5,6,7,7,7,8,10};
int m = 0; boolean flag = true;
for(int i=0; i<arraySearch.length; i++)
{
    flag=true;
    for(int j=i+1; j<arraySearch.length; j++)
    {
        if(arraySearch[i] == arraySearch[j])
        {
            m=arraySearch[i];
            flag = false;
            break;
        }
    }
    if(flag == false)
    {
        System.out.println(m);
    }   
}

这两种方法都给出了正确的结果,但我面临的问题是,如果有两个数字一个接一个地重复,它会打印两次。假设int[]数组= {1,1,2,4,5,4,2};

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-21 04:03:34

如果重复项不止一个,则会多次打印该数字。只需更改代码一次即可打印出来。试着这样做

代码语言:javascript
复制
Set<Integer> hs=new HashSet<Integer>();
Set<Integer> duplicate= new HashSet<Integer>();
for(int ar:arrays)
{
    if(!hs.add(ar))
    {
        duplicate.add(ar); 
    }           
}

这样可以避免重复打印。在此之后,可以使用循环显示集合中的元素。

票数 1
EN

Stack Overflow用户

发布于 2019-02-21 04:08:50

如果您使用的是Java 8或更高版本,则可以通过以下方式完成此操作:

代码语言:javascript
复制
int[] arrays = {1,1,2,4,5,4,2};
List<Integer> hs = IntStream.of(arrays).boxed().collect(Collectors.toList());           
hs.stream().filter(i -> Collections.frequency(hs, i) > 1)
   .collect(Collectors.toSet()).forEach(System.out::println);
票数 0
EN

Stack Overflow用户

发布于 2019-02-21 04:34:03

当有双倍数或三倍数时,您是否看到额外的输出?

例如,对于此输入:

代码语言:javascript
复制
int arraySearch[] = {2,2,3,4,5,6,7,7,7,8,10};

将有两个对7的检测。存在两个检测是一个循环测试元素6对元素7到10的结果,以及第二个循环测试元素7对元素8到10的结果:

代码语言:javascript
复制
first detection: {2,2,3,4,5,6,(7),(7),7,8,10};
second detection: {2,2,3,4,5,6,7,(7),(7),8,10};

如果数组按升序排列,则可以使用单个循环完成测试。对于随机顺序的数组,似乎有必要跟踪哪些元素被检测为具有重复项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54794004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档