首页 > 解决方案 > java - 如何仅使用for循环和if在java中仅打印一次重复值

问题描述

    int[] numbers = {3, 2, 5, 11, 7, 10, 11, 3, 15, 11, 17, 10, 5};
    int count = 0;
    boolean dup = false;

    System.out.println("arrays value");
    for (int n : numbers ) {
        System.out.print(n +" ");
    }
    
    System.out.println("\n\nDuplicated value on arrays: ");
    for (int a = 0 ; a < numbers.length ; a++ ) {
        for (int b = a + 1 ; b < numbers.length ; b++ ) {
            if (numbers[a] == numbers[b]) {
                count = numbers[a];
                dup = true;
            }
        }
        
        if (dup) {
            System.out.print(count +" ");
            dup = false;
            count = 0;
        }
    }

我只想打印一次重复值,每个只使用 for 循环和 if

此输出将打印 3 5 11 10 11,我如何只制作 3 5 11 10。

标签: java

解决方案


为此,使用不允许重复的集合的数据结构集是明智的。这意味着无论您添加到set唯一的相同值的数量,都将被存储。现在你可以简单地写

Set<Integer> mySet = new HashSet<>(Arrays.asList(numbers));
for(int number : mySet) {
    System.out.println(number);
}

如果您只想打印重复的值而不是仅存在一次的值(您的问题并不完全清楚),您可以执行类似的操作

Set<Integer> mySet = new HashSet<>();
for(int number : numbers) {
   if(!mySet.add(number)) { //the set method add(e) returns false if e is a duplicate i.e. can not be added to the set
      System.out.print(duplicate + " ");
   }
}

推荐阅读