这个地图/字符串数组中发生了什么?

时间:2015-05-18 08:27:40

标签: java arrays string dictionary

首先,我的代码运行正常。没有什么需要做的,但是当我从其他地方复制代码的某些部分时,我不完全理解这里发生的事情并希望得到解释来学习一些东西。

我使用play框架并向我的控制器类发送带有ID和分数的AJAX POST。我将这些参数放入字符串并将其保存在我的数据库中。

Map<String, String[]> parameters = request().body().asFormUrlEncoded();
        String questionIDInput = parameters.get("questionID")[0];
        String voteScoreInput = parameters.get("score")[0];

我没有得到的部分是:.get("questionID")[0]; / .get("score")[0];。 为什么那里有两个零?地图是某种长字符串,我使用"questionID / score"作为查找值的键吗?这真的让我很困惑,请赐教。

2 个答案:

答案 0 :(得分:8)

parameters.get("questionID")返回键&#34; questionID&#34;的值。该值是一个String数组(String[]),因此parameters.get("questionID")[0]为您提供该数组的第一个String

请注意,此代码假定Map中存在"questionID"键,并且该键的值为非空数组。如果这些假设中的任何一个都是假的,那么您将获得NullPointerExceptionArrayIndexOutOfBoundsException

答案 1 :(得分:2)

Map,与键对应。

在地图中,键的类型为String,而值的类型为String[]String个对象的数组)。

当您执行parameters.get("questionID")时,这将获取String[]数组,该数组对应于值等于"questionId"的键。

为了获取返回数组的第一个元素,使用了[0]