我试图了解Map接口如何在Java中工作。我要做的是:遍历字符串数组,并为数组name[]
中的每个名称将随机grade
放在0到5之间。然后将grade
映射到{{ 1}}。但是,地图大小变得奇怪,虽然我在数组中有10个元素,映射后name[i]
为5。为什么程序会多次计算相同的大小(参见输出)?以下是代码和输出:
map.size()
输出:
地图1的大小
地图2的大小
地图2的大小
地图2的大小
地图2的大小
地图3的大小
地图3的大小
地图4的大小
地图4的大小
地图5的大小
答案 0 :(得分:5)
为同一个键指定一个新值将覆盖旧值,因此如果您最多有5个不同的键(1-5),则您的地图的最大值为5。
您应该使用名称作为密钥,因为它们是唯一的。然后几个学生可以有相同的成绩。
答案 1 :(得分:3)
您使用成绩作为键
** (FunctionClauseError) no function clause matching in M.custom_fn/2
The following arguments were given to M.custom_fn/2:
# 1
[]
# 2
#Function<6.99386804/1 in :erl_eval.expr/5>
test.ex:11: M.custom_fn/2
由于成绩范围为map.put(grade, name[i]);
,因此地图不会大于5。