展开全部
其实这个问题,涉及到两个过程首先是统计数组中数字出现的次数,应该要有类32313133353236313431303231363533e78988e69d8331333365636666似“数字 – 出现次数”这种结果出现,其实就是Map结构的key和value
然后就是找出出现次数最大的一个,并返回对应的数字即可
针对以上两个过程,推荐采用Java8的流(Stream)来处理,代码比较简单易懂,因此下面的示例代码,请在JDK8的环境下运行int[] arr = {1, 2, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5};
// 过程1 Collectors.groupingBy代表是分类,按照本身Function.identity()进行分类,那相同数字就会放在一起,Collectors.counting是统计相同数字的个数
Map map = IntStream.of(arr).boxed().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println(“数字出现次数统计(数字=次数):” + map);
// 过程2 max方法是根据比较器(按照map的value进行排序)找出最大值
Optional maxOptional = map.entrySet().stream().max(Comparator.comparing(Map.Entry::getValue)).map(Map.Entry::getKey);
System.out.println(“出现次数最多的数字:” + maxOptional.get());
最后结果如下