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

Java中如何统计ArrayList内int数组的出现次数并按规则输出

实现方案

核心思路

int数组的默认equals方法比较的是内存地址而非数组内容,因此我们使用LinkedHashMap完成统计:它既可以保留数组在原列表中首次出现的顺序,又能方便统计每个数组的出现次数。

  1. 遍历存储int数组的ArrayList,将每个数组的内容转为唯一标识(本方案用内容字符串,也可转为List<Integer>)作为Map的key,value存储对应数组的出现次数
  2. 遍历统计完成的Map,按需求格式输出即可

完整修改代码

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;

public class ArrayCountDemo {
    public static void main(String[] args) {
        int[] a1 = {1,2,3,4,5};
        int[] a2 = {1,2,3,4,5};
        int[] a3 = {1,2,3,4,5};

        int[] a4 = {2,5,7,8,9};
        int[] a5 = {2,5,7,8,9};

        int[] a6 = {3,4,6,8,9};

        ArrayList<int[]> list = new ArrayList<>();
        list.add(a1);
        list.add(a2);
        list.add(a3);
        list.add(a4);
        list.add(a5);
        list.add(a6);

        // 统计数组出现次数,保留首次出现的顺序
        Map<String, Integer> countMap = new LinkedHashMap<>();
        for (int[] arr : list) {
            String arrContent = Arrays.toString(arr);
            countMap.put(arrContent, countMap.getOrDefault(arrContent, 0) + 1);
        }

        // 按要求格式输出
        for (Map.Entry<String, Integer> entry : countMap.entrySet()) {
            // 移除Arrays.toString生成的前后中括号,匹配目标输出格式
            String content = entry.getKey().substring(1, entry.getKey().length() - 1);
            Integer count = entry.getValue();
            if (count > 1) {
                System.out.printf("%s (%d)%n", content, count);
            } else {
                System.out.println(content);
            }
        }
    }
}

兼容低版本JDK说明

如果你使用的JDK版本低于8,不支持getOrDefault方法,可以将统计逻辑替换为如下写法:

for (int[] arr : list) {
    String arrContent = Arrays.toString(arr);
    if (countMap.containsKey(arrContent)) {
        countMap.put(arrContent, countMap.get(arrContent) + 1);
    } else {
        countMap.put(arrContent, 1);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:36:01