我正在为我的服务器开发一个Minecraft Bukkit插件。我的插件的一部分要求用户投票支持地图。当他们使用投票命令(例如/vote <mapnumber>
)时,他们的投票存储在HashMap
(String Playername
,Integer mapnumber
)这是为了检测用户是否已投票/我想投票给新地图。
然后我使用for循环将投票插入新的HashMap
(Integer Mapnumber
,Integer Numberofvotes
)。这就是我难倒的地方。
我正在寻找一种方法来确定哪个Mapnumber具有最多的音符。
答案 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()));