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

时间:2018-03-08 11:59:37

标签: java

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

map.size()

输出:

地图1的大小

地图2的大小

地图2的大小

地图2的大小

地图2的大小

地图3的大小

地图3的大小

地图4的大小

地图4的大小

地图5的大小

2 个答案:

答案 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。