/**
* 给定若干个工号 再给定 一个固定的工号 若干个工号中 出现的数字次数最多 且也是 给定固定工号中元素
*/
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));
}
}