有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在HashMap中找到最常见的值

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

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

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


共 (2) 个答案

  1. # 1 楼答案

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

    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);           
    
  2. # 2 楼答案

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

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