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