将数组存储在HashMap中作为其值

时间:2014-04-07 16:34:09

标签: java arrays arraylist hashmap

我想将Float数组存储为HashMap的值。

HashMap<Integer, Float[]> vFeatureHm = new HashMap<Integer, Float[]>();

这里的浮点数组包含指定数量的值,例如10。我怎么以及在哪里提到它?我将动态地将值添加到该数组中。我可以使用ArrayList,但我将它用于矩阵类型结构,我很容易从索引中获取值,因为值按此顺序存储。在这种情况下,ArrayList似乎对我来说太过分了。你能建议如何解决这个问题。现在,我开始使用ArrayList,但我想知道是否有一种方法可以使用,如上所述。

更新:我意识到在我的情况下,ArrayList对我来说不起作用,因为我需要放在特定的索引中。所以我必须使用上面提到的格式或使用HashMap,这也是一个过度杀戮。关于如上所述使用Float的任何建议?

2 个答案:

答案 0 :(得分:1)

您无需指定Float[]数组的维度。

该数组与Object映射的任何其他值一样是vFeatureHm,因此任何边界检查都与HashMap无关(尽管当然它可以在另一部分执行)你的代码)。

答案 1 :(得分:1)

由于float是一个对象,我将其初始化为如下所示。

Float[] featureValues = uFeatureHm.get(userid);
if(featureValues == null){
    featureValues = new Float[Settings.noOfCommonFeatures];
    featureValues[fi-1] = fv;
    uFeatureHm.put(userid, featureValues);
}else{
    featureValues[fi-1] = fv;
}

稍后,我只需访问特定用户的功能uFeatureHm.get(userid)[featureIndex]

即可