You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何输出Java整数数组中所有存在重复值的元素?

解决数组中输出所有重复元素全部实例的问题

你的核心需求是:输出数组中所有出现次数≥2的元素的每一个实例——比如原数组里的2出现2次就输出两个2,3出现3次就输出三个3,以此类推。

原代码的问题分析

你最初的双重循环逻辑存在两个关键问题:

  1. 只会打印当前元素之后的重复项,不会打印当前元素本身。比如第一个2(索引0)会打印第二个2(索引1),但第二个2之后没有其他2,最终只输出一个2,漏掉了第一个2。
  2. 逻辑冗余:重复元素的前面实例会多次触发打印后面的重复项,虽然最终输出的重复元素数量可能碰巧正确,但逻辑不够高效且容易出错。

而你尝试的另一种方法只输出了每个重复元素的唯一值,没有输出全部实例,也不符合需求。

解决方案:先统计元素出现次数,再遍历输出

我们可以先用HashMap统计数组中每个元素的出现次数,再二次遍历原数组,输出所有出现次数大于1的元素实例。这样既能保留原数组的顺序,又能精准输出所有符合要求的元素。

import java.util.HashMap;
import java.util.Map;

public class DuplicateElements {
    public static void main(String[] args) {
        int[] arr = new int[] {1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 7, 8, 9, 10};
        
        // 第一步:统计每个元素的出现次数
        Map<Integer, Integer> countMap = new HashMap<>();
        for (int num : arr) {
            countMap.put(num, countMap.getOrDefault(num, 0) + 1);
        }
        
        // 第二步:遍历原数组,输出出现次数≥2的元素
        for (int num : arr) {
            if (countMap.get(num) > 1) {
                System.out.print(num + " ");
            }
        }
    }
}

输出结果

2 2 3 3 3 4 4 4 4 5 5 5 5 5 

逻辑说明

  1. 统计次数:通过增强for循环遍历数组,用HashMap的getOrDefault方法快速累加每个元素的出现次数,避免空指针问题。
  2. 遍历输出:再次遍历原数组,检查当前元素的统计次数,只要次数大于1就输出,完美保留原数组中重复元素的顺序和全部实例。

如果你使用Java 8及以上版本,也可以用Stream API实现更简洁的代码:

import java.util.Arrays;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

public class DuplicateElementsStream {
    public static void main(String[] args) {
        int[] arr = new int[] {1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 7, 8, 9, 10};
        
        Map<Integer, Long> countMap = Arrays.stream(arr)
                .boxed()
                .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
        
        Arrays.stream(arr)
                .filter(num -> countMap.get(num) > 1)
                .forEach(num -> System.out.print(num + " "));
    }
}

这个版本逻辑和HashMap版本一致,只是用Stream的方式完成统计和过滤,适合熟悉Lambda表达式的场景。

内容的提问来源于stack exchange,提问作者askein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 16:45:42