Java打印任意数组元素出现的次数

//方法一:
        int[] arr = { 1, 2, 3, 3, 4, 4 };
        boolean[] flagArr = new boolean[arr.length];

        for (int i = 0; i < arr.length; i++) { // arr中重复的元素对应的索引arr2中赋值为0;
            int count = 0;
            if (!flagArr[i]) {
                for (int j = i + 1; j < arr.length; j++) {
                    if (arr[i] == arr[j]) {
                        flagArr[j] = true;
                    }
                }
            }
        }

            for (int i = 0; i < arr.length; i++) {// 只要arr2中不为0的话,那对应得索引在arr中的元素必不重复;
                if (!flagArr[i]) {
                    int count = 0;
                    for (int j = 0; j < arr.length; j++) {
                        if (arr[i] == arr[j]) {
                            count++;
                        }
                    }
                    System.out.println(arr[i] + "出现了" + count + "次");
                }
            }
            /*打印结果:
            1出现了1次
            2出现了1次
            3出现了2次
            4出现了2次

            */
//方法二:
    /** 
    这个方法是定义一个新数组,新数组只存老数组不重复的元素。
        */
        int[] arr = { 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 3, 3, 3, 4, 0,4, 4, 4, 4, 5, 5, 5, 5, 5 };
        int[] arr2 = new int[arr.length];
        boolean flag;
        int count1 = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == 0) {
                count1++;
            }
        }
        System.out.println(0 + "出现了" + count1 + "次");
        for (int i = 0; i < arr.length; i++) {
            flag = true;
            for (int j = 0; j < arr.length; j++) {
                if (arr[i] == arr2[j]) {
                    flag = false;
                }
            }
            if (flag) {
                arr2[i] = arr[i];
                int count = 0;
                for (int j = i; j < arr.length; j++) {
                    if (arr[i] == arr[j]) {
                        count++;
                    }
                }
                System.out.println(arr[i] + "出现了" + count + "次");
            }
        }
        /*打印结果:
        0出现了8次
        1出现了1次
        2出现了3次
        3出现了3次
        4出现了5次
        5出现了5次

        */
//方法三:
//虽然集合有方法可以去重,但是感觉还是得锻炼一下自己的逻辑思维能力

        ArrayList<Integer> arrlist = new ArrayList<>();
        int[] arr = { 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 3, 3, 3, 4, 0, 4, 4, 4, 4, 5, 5, 5, 5, 5 };
        // List<int[]> asList = Arrays.asList(arr);
        for (int i : arr) {
            arrlist.add(i);
        }
        for (int x = 0; x < arrlist.size() - 1; x++) {// 手动集合去重代码
            for (int y = x + 1; y < arrlist.size(); y++) {
                if (arrlist.get(x) == arrlist.get(y)) {
                    arrlist.remove(y);
                    y = y - 1;
                }
            }
        }
        for (int i = 0; i < arrlist.size(); i++) {
            int count = 0;
            for (int j = 0; j < arr.length; j++) {
                if (arrlist.get(i) == arr[j]) {
                    count++;
                }
            }
            System.out.println(arrlist.get(i) + "出现了" + count + "次");
        }




  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值