-1

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

然后我使用 for 循环将投票插入新的HashMap( Integer Mapnumber, Integer Numberofvotes) 中。这就是我难过的地方。

我正在寻找一种方法来确定哪个 Mapnumber 的注释最多。

4

2 回答 2

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);           
于 2013-10-28T12:20:42.023 回答
0

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

int maxNumberofVotes=(Collections.max(map.values()));
于 2013-10-28T13:21:58.777 回答