关于Map集合的使用,遍历map的方法

Map用于存储键值对,键不可重复,值可以重复。

对于一个一维数据,找出各个数字出现的频率并显示。

package com.study.test.collection;


import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;


public class HashMapTest {


/**
* hashMap集合的使用
* 统计一个数组中出现次数超过n/2的数
* 数组的数  出现次数   键值对
* @param args
*/
public static void main(String[] args) {
int arry[]={2,3,2,7,4,6,2,7,2,9,2,2,6};
Map <Integer,Integer> hashMap=new HashMap<Integer, Integer>();

//hashMap中存放每个数出现的次数
for(int k=0;k<arry.length;k++){
if(hashMap.containsKey(arry[k])){
int temp=hashMap.get(arry[k]);//已经出现的次数
temp=temp+1;
hashMap.put(arry[k], temp);//新次数存入map中
}else{
hashMap.put(arry[k], 1);
}
}
//出现次数大于等于n/2即可
//遍历Map 
//方法一
for(Map.Entry<Integer, Integer> entry:hashMap.entrySet()){
int temp=entry.getValue();
if(temp>=arry.length/2){
System.out.println("key="+entry.getKey()+"  "+"次数="+entry.getValue());
}
}

//方法二

Iterator<Entry<Integer, Integer>> it=hashMap.entrySet().iterator();
while(it.hasNext()){
Map.Entry<Integer, Integer> entry=it.next();
if(entry.getValue()>=arry.length/2){
System.out.println("使用Iterator得到的key="+entry.getKey()+"  "+"次数="+entry.getValue());
}
}

//treeMap
Map <Integer,Integer>treeMap=new TreeMap<Integer, Integer>(new Comparator<Object>() {


@Override
public int compare(Object o1, Object o2) {
// TODO Auto-generated method stub
return ((Integer) o2).compareTo((Integer) o1);
}

});

Iterator< Integer> itrator=hashMap.keySet().iterator();
while(itrator.hasNext()){
Integer key=itrator.next();
Integer value=hashMap.get(key);
treeMap.put(key, value);
}

Iterator <Integer> itTree=treeMap.keySet().iterator();
System.out.print("使用TreeMap排序结果为");
String count = "";
while(itTree.hasNext()){
Integer key=itTree.next();
System.out.print(key+" ");
count=count+treeMap.get(key)+" ";
}
System.out.println("");
System.out.println("对应的出现次数="+count);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值