Java 动态创建对象并运行BFS
我想修改下面的代码,以便动态地从文件中获取数据并运行BFS。我已经尝试过使用loop,但我仍然无法确定如何使用匿名对象建立节点的动态连接Java 动态创建对象并运行BFS,java,breadth-first-search,Java,Breadth First Search,我想修改下面的代码,以便动态地从文件中获取数据并运行BFS。我已经尝试过使用loop,但我仍然无法确定如何使用匿名对象建立节点的动态连接 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,
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获取它们。因此我将读取文件,将源节点作为键,目标节点作为值。然后使用for循环使节点对象迭代键,相同的键用于图形,最后基于值找到键并创建连接