思路;
(1)将数组以键值对的形式存储到map中(key为数组元素值,value为元素出现频率)
(2)然后遍历map,找出频率的最大值max。
(3)然后再遍历map,把value值等于max的键值对存储到新的map中,返回这个map。(此时这个map里存储的是出现频率最多的元素以及最大频率,以键值对的形式存储在map中,正因为这样的元素不止一个,所以才想到存储在map中)
(4)主函数接收这个map返回值,然后对这个map进行遍历,输出每一个键值对的key值以及value值
需要提起知道的几个Map中的方法
(1)put(key,value)
像map中添加键值对。
第一个参数是key值,第二个参数是value值,这里对应,第一个参数是元素值,第二个参数是频率值
(2)get(key)
获取key值对应的value值
(3)containsKey(key)
查询map中知否存在此key值,这里用这个函数判断当前数组元素是否已经添加到map中
遍历map的两种方法:
1、
Set<Integer> keyset=m.keySet(); //把map的key值单独取出来构建成一个Set
Iterator<Integer> it = keyset.iterator(); //然后遍历这个Set,这个Set里的每一个元素(it.next())都代表map中的一个key值
这中方法对于即想得到key值又想得到value值来说不是很方便,于是推荐下面一种遍历方法
2、
Set<Map.Entry<Integer, Integer>> set=m.entrySet();
Iterator<Map.Entry<Integer, Integer>> itt=set.iterator();
map.entrySet()的意思是把每一个键值对作为整体,这个整体的类型就是
Map.Entry<key的类型,value的类型>。也就是说Set中存储的是每一个键值对,
类型为Map.Entry<key的类型,value的类型>。
于是接着可以对这个Set利用迭代器进行遍历,每一个it.next()都是Map.Entry<>类型
然后再把每一个Set元素调用getKey()可以获取Set中存储的Map键值对的key值,getValue()方法
可以获取value值。
while(it.hasNext())
{
Map.Entrt<Integer,Integer> m=itt.next();
key=m.