Java 在HashMap中查找最常见的值

Java 在HashMap中查找最常见的值,java,java-7,bukkit,Java,Java 7,Bukkit,我正在为我的服务器开发Minecraft Bukkit插件。我的部分插件要求用户投票选择地图。当他们使用投票命令(例如,/vote)时,他们的投票将存储在一个HashMap(String Playername,Integer mapnumer)中,这是为了检测用户是否已经投票/想要投票给一个新的地图 然后我使用for循环将投票插入一个新的HashMap(整数映射数,整数投票数)。这就是我被难倒的地方 我正在寻找一种方法来找出哪个Mapnumber注释最多。在构建hashmap之后,您可以构建另一

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

然后我使用for循环将投票插入一个新的
HashMap
整数映射数
整数投票数
)。这就是我被难倒的地方


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

在构建hashmap之后,您可以构建另一个,其中键是Mapnumber,值可以是频率。然后,我们要做的就是找到最大频率

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);           
HashMap freq_map=new HashMap();
int map_no=0,fr;
迭代器it=map.entrySet().Iterator();
while(it.hasNext()){
Map.Entry pairs=(Map.Entry)it.next();
map_no=pairs.getValue());
if(map.contains(map\u no))fr=freq\u map.get(map\u no);
否则fr=0;
fr++;
频率映射放置(映射编号,fr);
}
//去找max
int max=-1,温度;
int结果=-1;
迭代器it=freq_map.entrySet().Iterator();
while(it.hasNext()){
Map.Entry pairs=(Map.Entry)it.next();
temp=pairs.getValue());
如果(温度>最大值){
最大值=温度;
结果=pairs.getKey();
}
}
System.out.println(“最高频率=”+结果);

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

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

好吧,忘记它实际上是一个映射的事实-您有一个键/值对的集合,并且您想要找出哪个键的值最高。所以想一想你应该如何做到这一点,在序列上迭代并记住“迄今为止你所看到的最好的”…你可能的重复应该看看。