将HashSet中的值添加到2D Matrix

时间:2017-04-22 12:29:27

标签: java arrays matrix set

我有一个Map结构,其中包含一个Integer作为键,一组Object作为值。但是,我已经覆盖了toString方法以获取值的Integer值。例如,地图看起来像

Key: 1 Values: [1, 2, 4]

我在构建这个地图结构的2D矩阵时遇到了一些麻烦。当我循环时,我正在检查我的迭代器值是否是Map中的键,但是我无法检查第二个迭代器是否等于设置值。这是有问题的代码的一部分

for (int i = 1; i < this.adjacencyMatrix[0].length; i++) {
    System.out.print(i + " ");
}
System.out.println();
for (int i = 1; i < this.adjacencyMatrix.length; i++) {
    System.out.print(i + " ");
    for (int j = 1; j < this.adjacencyMatrix[i].length; j++) {
        if (this.nodes.containsKey(i)) {
            // Handle the set
            this.adjacencyMatrix[i][j] = 1;
        } else {
            this.adjacencyMatrix[i][j] = 0;
        }
        System.out.print(this.adjacencyMatrix[i][j] + " ");
    }
    System.out.println();
}

我的矩阵现在将为整个地图键行打印1。

例如,如果4是一个键,则整个10行都将打印1.但是,假设我有一个像4-- [1,2,4]的映射,只有1,2,4应该有1&#39 ; s在给定的行中,其余的都应为0。

1 个答案:

答案 0 :(得分:0)

内部循环的每个步骤的if-condition(containsKey)为true(或false)。

内部循环应该被两个循环替换:索引j上的第一个循环并将所有值初始化为0.然后迭代节点集中的元素,获取每个值并将其用作索引:

adjacencyMatrix[i][value] = 1