java - Java中通过循环将对象添加到数组

标签 java arrays object

每个 Vertex 类型的对象都有一个名为“adjaccies”的数组,由 Edge 类型的对象组成:

class Vertex
{
public Edge[] adjacencies;
}

我有一个名为 vertexList 的 Vertex 对象的 ArrayList。 每个 Edge 对象都由(顶点目的地、到达那里的成本)组成,成本来自成本矩阵:

vertexList.get(0).adjacencies = new Edge[]{ new Edge(vertexList.get(0), intMatrix[0][0]),
                                 new Edge(vertexList.get(1), intMatrix[0][1]),
                                 new Edge(vertexList.get(2), intMatrix[0][2]),
                                 new Edge(vertexList.get(3), intMatrix[0][3]),
                                 new Edge(vertexList.get(4), intMatrix[0][4]),
                                 new Edge(vertexList.get(5), intMatrix[0][5]),
                                 new Edge(vertexList.get(6), intMatrix[0][6])};
vertexList.get(1).adjacencies = new Edge[]{ new Edge(vertexList.get(0), intMatrix[1][0]),
                                 new Edge(vertexList.get(1), intMatrix[1][1]),
                                 new Edge(vertexList.get(2), intMatrix[1][2]),
                                 new Edge(vertexList.get(3), intMatrix[1][3]),
                                 new Edge(vertexList.get(4), intMatrix[1][4]),
                                 new Edge(vertexList.get(5), intMatrix[1][5]),
                                 new Edge(vertexList.get(6), intMatrix[1][6])};

这是硬编码的,可以工作,但是有七个不同的顶点,它并不优雅,我想通过循环简化这些对象和数组的创建。我尝试了以下方法,但没有成功:

for (int b = 0; b < 7; b++){
       vertexList.get(b).adjacencies = new Edge[]{
           for (int p = 0; p < 7; p++){
               new Edge(vertexList.get(p), intMatrix[b][p]);
           }
       }
   }

我的 IDE 告诉我第二个 for 循环是“非法的表达式开始” 是否可以用循环创建边缘?谢谢!

最佳答案

你不能简单地将某些东西实例化为涅槃,这就是你在内循环中试图做的事情。除此之外,不允许在静态数组初始化中启动循环。

首先在辅助变量中创建 Edge[]:

Edge[] myNewEdge = new Edge[7];
for(i=0; i<7;i++) {
    myNewEdge[i] = new Edge(...);
}

然后将其分配到您的 vertexList 中:

vertexList.get(b).adjacencies = myNewEdge;

关于java - Java中通过循环将对象添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20157420/

相关文章:

java - 无法获取 JDBC 连接;嵌套异常是 java.sql.SQLException Mule ESB

python - numpy 数组中的快速替换

c# - 如何将普通字符串转换为十六进制的等效字节数组?

arrays - 仅当值位于数组的第一行时,才匹配数组中的匹配字段

javascript - 在 JavaScript 中合并两个对象 (NodeList) 数组

javascript - 如何在 javascript 函数对象中测试是否调用了无效方法?

JAVA外部框架来控制数组

java - 从简单名称获取完全限定名称的列表

java - 我无法弄清楚我的变量从哪里调用或到哪里调用

php - 硬编码数组和对象还是从数据库填充?