我有一个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。
答案 0 :(得分:0)
内部循环的每个步骤的if-condition(containsKey)为true(或false)。
内部循环应该被两个循环替换:索引j上的第一个循环并将所有值初始化为0.然后迭代节点集中的元素,获取每个值并将其用作索引:
adjacencyMatrix[i][value] = 1