關於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);
}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章