在HashMap中查找最常见的值

时间:2013-10-28 12:10:35

标签: java java-7 bukkit

我正在为我的服务器开发一个Minecraft Bukkit插件。我的插件的一部分要求用户投票支持地图。当他们使用投票命令(例如/vote <mapnumber>)时,他们的投票存储在HashMapString PlayernameInteger mapnumber)这是为了检测用户是否已投票/我想投票给新地图。

然后我使用for循环将投票插入新的HashMapInteger MapnumberInteger Numberofvotes)。这就是我难倒的地方。

我正在寻找一种方法来确定哪个Mapnumber具有最多的音符。

2 个答案:

答案 0 :(得分:0)

在构建散列映射之后,您可以构建另一个键,其中键是映射编号,值可以是频率。那么所有要做的就是找到最大频率。

HashMap<Integer,Integer> freq_map = new HashMap<Integer,Integer>();

int map_no=0,fr;
Iterator it = map.entrySet().iterator();
while (it.hasNext()) {
    Map.Entry pairs = (Map.Entry)it.next();
    map_no = pairs.getValue());
    if(map.contains(map_no)) fr = freq_map.get(map_no);
    else fr = 0;

    fr ++;
    freq_map.put(map_no,fr);
}

// to find max

int max = -1,temp;
int result = -1;
Iterator it = freq_map.entrySet().iterator();
while (it.hasNext()) {
    Map.Entry pairs = (Map.Entry)it.next();
    temp = pairs.getValue());

    if(temp>max){
        max = temp;
        result = pairs.getKey();
    }
}

System.out.println("Highest frequency = "+result);           

答案 1 :(得分:0)

试试这个,它会给你最高票数:

int maxNumberofVotes=(Collections.max(map.values()));