【问题标题】:Java HashMap of Vectors向量的 Java HashMap
【发布时间】:2017-01-25 16:18:20
【问题描述】:

我的情况是,我想要一个哈希映射,其中一个整数值作为键,一个双精度数组作为值(我知道它的长度)。 所以我想要类似的东西

        HashMap<Integer, Double[]> hash = new HashMap<Integer, Double[]>();

接下来我扫描一个结果集,找到 key,value 的第一个属性。 在第一阶段结束时,我将拥有一个带有一些键的哈希映射,并且对于每个键,我将有一个表示特定分数的 Double 值。

接下来我想用不同的 key,values 扫描另一个不同的 ResultSet,我想用这些值填充我的哈希。 问题是在这里我可以找到我没有条目的元素和我已经有条目的文档。

我想达到这样一种情况,对于特定的键,我可以访问所有不同的分数。

如何将迭代值添加到这些数组中?因为如果我使用通常的 hash.put(key,value) 我必须使用 Double[] 作为值,但我想迭代地向哈希映射添加不同的分数。

我认为使用 Vector 会给我带来一些问题,因为某些键可能有一些不会填充的空值。

【问题讨论】:

  • 你能举个例子吗?或者你尝试过的一些代码?
  • 我想创建一个 double 数组的 hashMap 所以:HashMap hash = new HashMap() 但是当我向哈希中添加一个元素时map 我不想添加所有数组(因为我一开始不知道),但我想迭代地向数组的每个字段添加一个元素。例如,我会有类似 hash.put(key,0,value[0]) 的东西,其中 0 是数组中想要说出特定值的位置的索引。然后我会有类似 hash.put 的东西(key,1,value) 将在数组的第一个位置添加特定值的键。
  • 您必须使用 Double[] 吗?因为使用 list 会更容易。
  • ... 或double[]
  • 提示:永远不要在 cmets 中添加更多信息。请更新您的问题。

标签: java arrays hashmap hashtable


【解决方案1】:

我不确定我对您的要求的理解程度。我想你可能会做一些事情:

    double[] arrayInMap = hash.get(key);
    if (arrayInMap == null) {
        hash.put(key, valuesToAdd);
    } else {
        if (arrayInMap.length != valuesToAdd.length) {
            throw new IllegalStateException("Key "+ key + ": cannot add " + valuesToAdd.length
                    + " values to array of length " + arrayInMap.length);
        }
        for (int ix = 0; ix < arrayInMap.length; ix++) {
            arrayInMap[ix] += valuesToAdd[ix];
        }
    }

我希望你至少能以此为灵感。

【讨论】:

  • 是的,我没想过这样做。我试试看,非常感谢!!
猜你喜欢
  • 2016-11-11
  • 1970-01-01
  • 2022-06-23
  • 2015-07-12
  • 2018-01-10
  • 1970-01-01
  • 2010-12-12
  • 2013-12-23
相关资源
最近更新 更多