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

    xiaoxiao2021-03-25  145

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

    转载请注明原文地址: https://ju.6miu.com/read-4491.html

    最新回复(0)