JAVA:给定一个特定工号和一组工号集合,特定工号的某个数存在于工号集合且出现的次数也是最多的。求这个数以及出现次数。

本文介绍了一个Java程序,用于统计给定多个工号字符串中各数字出现的次数,并特别关注一个固定工号中的元素。通过遍历和哈希映射实现,最后找出在固定工号中最频繁出现的数字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * 给定若干个工号 再给定 一个固定的工号 若干个工号中 出现的数字次数最多 且也是 给定固定工号中元素
 */
import java.util.*;


/**
 * 给定若干个工号 再给定 一个固定的工号 若干个工号中 出现的数字次数最多 且也是 给定固定工号中元素
 */
public class Test710 {
    public static void main(String[] args) {
        ArrayList<String> objects = new ArrayList<>();
        objects.add("123456");
        objects.add("321654");
        objects.add("852963");
        objects.add("543544");
        objects.add("878641");
        objects.add("951750");
        objects.add("951793");
        objects.add("125876");
        String s = objects.get(0) + objects.get(1) + objects.get(2) + objects.get(3)
                + objects.get(4) + objects.get(5) + objects.get(6) + objects.get(7);
        char[] chars = s.toCharArray();//将字符串 转为字符串数组
        Map<Integer, Integer> map = new HashMap<>();
        //外轮循环控制 0~9 比较
        for (int i = 0; i < 10; i++) {
            int count = 0; //定义数字出现的数量 每次循环清零
            for (int j = 0; j < chars.length; j++) {
                if (chars[j] == i + 48) { // ASCII编码中数字字符'0'=48,以此类推
                    count++; //此数出现一次时,数量加1
                }
            }
            System.out.println("数字" + i + "出现的次数为" + count);
            //K 为 存在的数字  V 为该数字出现的次数
            map.put(i, count);
        }

        Map<Integer, Integer> map2 = new HashMap<>();
        ArrayList<String> objects1 = new ArrayList<>();
        objects1.add("852963114");
        String K = objects1.get(0);
        char[] chars1 = K.toCharArray();
        //给定工号的中的数 存在工号集合中
        for (int c = 48; c < chars1.length + 48; c++) {
            char o = chars1[c - 48];
            int k = o;
            //当给定工号的值 存在于K值
            boolean b = map.containsKey(k - 48);
            //当存在得时候  取出他的值 也就是 取出他出现的次数
            if (b) {
                Integer integer = map.get(k - 48);
                //当值 存在时  存入MAP  K 是 给定工号中 存在的数 V 是这个数出现的次数
                map2.put(k - 48, integer);
            }
        }
        System.out.println(map2);
        //遍历map 集合 存入list 集合
        List<Map.Entry<Integer, Integer>> list = new ArrayList(map2.entrySet());
        //根据V值进行排序
        Collections.sort(list, (o1, o2) -> (o2.getValue() - o1.getValue()));
        //第一个就是最大值
        int key = list.get(0).getKey();
        System.out.println("数字" + key + "次数" + map2.get(key));
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值