蓝桥杯 算法训练 出现次数最多的整数

本文介绍了如何使用Java中的TreeMap和Collections.sort进行数据排序,特别是针对出现次数最多的整数问题。首先,通过将TreeMap的EntrySet转换为List,然后利用Collections.sort进行排序,比较过程中依据value(出现次数)进行比较。文中还提供了完整的代码示例,展示了如何自定义Comparator来完成这一操作。
摘要由CSDN通过智能技术生成

蓝桥杯记录


算法训练 出现次数最多的整数
问题描述
  编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。
  输入格式:第一行是一个整数N,0< N< 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。
  输出格式:输出只有一行,即出现次数最多的那个元素值。
输入输出样例
样例输入
5
100
150
150
200
250
样例输出
150
解题思路
题目很简单,解题就不多写了,主要想记录Map类的排序方法。
原本用的是HashMap,后来看到TreeMap是直接排序的,就改成了TreeMap。但是发现是按照Key排序的,所以还是只能用其他方法来将键值对按照Value排序。

TreeMap按照value进行排序
https://www.cnblogs.com/Berryxiong/p/6240514.html
Java中Collections.sort()排序详解
https://blog.csdn.net/xx326664162/article/details/52227690

若一个类实现了Comparable接口,就意味着“该类支持排序”。 List列表(或数组),里面的元素是实现了Comparable接口的类,则该List列表(或数组)可以通过 Collections.sort(或 Arrays.sort)进行排序。思路是把TreeMap的EntrySet转换成list,然后使用Collections.sort排序。

定义一个列表,元素类型限定为Map类Entry接口,函数参数为存放数据的TreeMap:nums的键值对
List<Entry<Integer,Integer>> list = new List<Entry<Integer,Integer>>(nums.entrySet());
然后通过 Collections.sort排序,这个函数有两种参数列表:在这里插入图片描述
这里用第一种
Comparations.sort(list , new Comparator<Map.Entry<Integer,Integer>(){
public int compare(Entry<Integer,Integer> num1,Entry<Integer,Integer> num2){
return num1.getValue().compareTo(num2.getValue());
}
});

compareTo()方法,如果调用该方法的对象比参数对象大,返回结果>0;相等,等于0;小,返回结果<0。

完整代码如下

import java.util.*;
import java.util.Map.Entry;

public class 出现最多的整数 {
   
	public static void main(String[] args) 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值