【发布时间】:2018-08-16 18:34:19
【问题描述】:
我正在尝试了解 Map 接口在 Java 中的工作原理。我要做的是:遍历字符串数组,并为数组name[] 中的每个名称在0 到5 之间放置一个随机grade。然后将grade 映射到name[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());}
}
}
输出:
地图 1 的大小
地图 2 的大小
地图 2 的大小
地图 2 的大小
地图 2 的大小
地图 3 的大小
地图 3 的大小
地图 4 的大小
地图 4 的大小
地图5的大小
【问题讨论】:
-
提示:地图不允许重复键。
-
你确定成绩是关键吗?如果是,是否要收集所有成绩相同的姓名?
-
看看map.put(name[i],grade);会发生什么样的魔法
标签: java