在java中映射 - 获取错误的地图大小

sum*_*u00 -4 java

我试图了解Map接口如何在Java中工作.我要做的是:遍历字符串数组,并为数组中的每个名称name[]放置grade0到5之间的随机.然后映射gradename[i].然而,地图大小变得奇怪,虽然我在数组中有10个元素,map.size()映射后是5.为什么程序会多次计算相同的大小(参见输出)?以下是代码和输出:

    import java.util.*;  

    class MapInterfaceExample{  

    public static void main(String[] args){  

    int grade = 0; 
    String[] name = {"Lisa", "Dan", "John", "Adam", "George", "Amanda", "Sarah", "James", "Derek", "Sam"}; 

    Map<Integer,String> map=new HashMap<Integer,String>();  

    for(int i=0; i<name.length; i++){
    grade = (int)(Math.random()*5+1); 
    map.put(grade, name[i]);  
    //System.out.println(grade + "\t"+ name[i]);  
    System.out.println("Size of map "+ map.size());}
    } 
    }
Run Code Online (Sandbox Code Playgroud)

输出:

地图大小1

地图大小2

地图大小2

地图大小2

地图大小2

地图大小3

地图大小3

地图大小4

地图大小4

地图大小5

Kay*_*man 5

为同一个键指定新值将覆盖旧值,因此如果最多有5个不同的键(1-5),则地图的最大大小为5.

您应该使用名称作为键,因为它们是唯一的.然后几个学生可以有相同的成绩.