gpt4 book ai didi

java - 动态创建对象并运行 BFS

转载 作者:行者123 更新时间:2023-12-02 12:01:37 26 4
gpt4 key购买 nike

我想修改下面的代码以动态从文件中获取数据并运行 BFS。我尝试过循环,但我坚持如何使用匿名对象动态连接节点。

    Node nA=new Node("101");
Node nB=new Node("102");
Node nC=new Node("103");
Node nD=new Node("104");
Node nE=new Node("105");

//Create the graph, add nodes, create edges between nodes
Graph g=new Graph();
g.addNode(nA);
g.addNode(nB);
g.addNode(nC);
g.addNode(nD);
g.addNode(nE);

g.setRootNode(nA);

g.connectNode(nA,nB);
g.connectNode(nA,nC);
g.connectNode(nA,nD);
g.connectNode(nD,nE);

将会有一个包含连接节点的边缘文件。我的示例代码如下

String[] nodes = {"1","2","3","4"};
ArrayList<Node> Nodelist = new ArrayList<Node>();

//create node objects
for(String val : nodes) {
Nodelist.add(new Node(val));
}

//create graph nodes from array nodelist
Graph g = new Graph();
for(Node val : Nodelist) {
g.addNode(val);

}
g.setRootNode(Nodelist.get(0));
//then in loop to create connection between nodes from file in structure [101,102] , [102,103] ...
for(){
int[] arr = file.split(",")
g.connectNode(arr[0],arr[1])
}

我的问题是对象名称。我尝试使用匿名对象,然后将它们添加到 addNode() 中,但是我将如何创建将使用匿名对象数组从文件中读取的节点的连接。我不知道不知道我是否清楚我想要实现的目标。

我如何将它们添加到 HashMap 中,但使用相同的键和值数组。我尝试过使用 arraylist,但仅保存最后一个值。

最佳答案

您缺少的是一种通过节点的值来查找节点的方法。您可以通过用映射替换节点列表来获得它,其中节点的值是键(假设:每个值都不同)。

Map<String, Node> nodeMap = new HashMap<>();

for (String val: nodes) {
nodeMap.put(val, new Node(val));
}

稍后连接节点通过它们的值从 nodeMap 获取它们。

关于java - 动态创建对象并运行 BFS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47208119/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com