Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 动态创建对象并运行BFS_Java_Breadth First Search - Fatal编程技术网

Java 动态创建对象并运行BFS

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,

我想修改下面的代码,以便动态地从文件中获取数据并运行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, 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循环使节点对象迭代键,相同的键用于图形,最后基于值找到键并创建连接