繁体   English   中英

如何访问HashMap中的特定值?

[英]How can i access specific value in a HashMap?

这个简单的游戏会询问玩家的人数和他们的名字并计算他们的得分。我如何才能获得得分最高的玩家?

主要:

  public static void main(String[] args) {


    Scanner scanner = new Scanner(System.in);
    HashMap<String,Integer> players= new HashMap<String,Integer>();

    System.out.printf("Give the number of the players: ");
    int numOfPlayers = scanner.nextInt();

    for(int k=1;k<=numOfPlayers;k++)
    {
        System.out.printf("Give the name of player %d: ",k);
        String nameOfPlayer= scanner.next();
        players.put(nameOfPlayer,0);//score=0
    }

    //This for finally returns the score
    for(String name:players.keySet())
    {
          System.out.println("Name of player in this round: "+name);
          //::::::::::::::::::::::
          //::::::::::::::::::::::


          int score=players.get(name)+ p.getScore();;

          //This will update the corresponding entry in HashMap
          players.put(name,score);
          System.out.println("The Player "+name+" has "+players.get(name)+" points ");
    }
}

这是我自己尝试的:

Collection c=players.values(); 
System.out.println(Collections.max(c)); 

您可以使用Collections.max()来获取HashMap.entrySet()与用于比较值的自定义比较器所获得的hashmap条目的Collection的最大值。

例:

    HashMap<String,Integer> players= new HashMap<String,Integer>();
    players.put("as", 10);
    players.put("a", 12);
    players.put("s", 13);
    players.put("asa", 15);
    players.put("asaasd", 256);
    players.put("asasda", 15);
    players.put("asaws", 5);
    System.out.println(Collections.max(players.entrySet(),new Comparator<Entry<String, Integer>>() {
        @Override
        public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
            return o1.getValue().compareTo(o2.getValue());
        }
    }));

您可以修改以上代码以最好地满足您的条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM