'How can I add node and Edge in a different way so that I can add a large file

 public static void main(String[] args){
        
        
         Node A = new Node("A");
         Node B = new Node("B");
         Node C = new Node("C");
         Node D = new Node("D");
         Node E = new Node("E");
         Node F = new Node("F");
         Node G = new Node("G");
         Node N = new Node("N");


            A.adjacencies = new Edge[]{
                    new Edge(B,1),
                    new Edge(C,2),
                    new Edge(D,5)
            };
             
            B.adjacencies = new Edge[]{
                    new Edge(F,2),
                    new Edge(A,1)
            };
             
            C.adjacencies = new Edge[]{
                    new Edge(E,1),
                    new Edge(A,2)
            };
             
             //Sibiu
            E.adjacencies = new Edge[]{
                    new Edge(F,1),
                    new Edge(D,1),
                    new Edge(C,1)
            };
            D.adjacencies = new Edge[]{
                    new Edge(N,4),
                    new Edge(E,1),
                    new Edge(A,5),
            };
            F.adjacencies = new Edge[]{
                    new Edge(G,7),
                    new Edge(B,2),
                    new Edge(E,1)
            };
            N.adjacencies = new Edge[]{
                    new Edge(G,1),
                    new Edge(D,4)
            };
            G.adjacencies = new Edge[]{
                    new Edge(N,1),
                    new Edge(F,7)
            };
            AstarSearch(A,G);

            List<Node> path = printPath(G);

                    System.out.println("Path: " + path);


    }

How can I add node and Edge in a different way so that I can add a large file for example: HashMap<String, Node> nodes;

    public AstarSearchAlgo() {
        nodes = new HashMap<String, Node>();
    }

    public void addNode(String name) {
        if (nodes.get(name) == null) {
            nodes.put(name, new Node(name));
        }
    }


      public void addEdge(String source, String dest, double cost) {
            Node n1 = nodes.get(source);
            Node n2 = nodes.get(dest);
            if (n1 != null && n2 != null) {
                if (!n1.hasEdge(dest))
                    n1.edges.add(new Edge(dest, cost));
                if (!n2.hasEdge(source))
                    n2.edges.add(new Edge(source, cost));
            }
      }

whereas the main method

        public static void main(String[] args){
            AstarSearchAlgo g = new AstarSearchAlgo();
            g.addNode("A");
            g.addNode("B");
            //..
            g.addEdge("A", "B", 1);
            g.addEdge("A", "C", 2);
            //..
        }
        }

If there is a method more effective than this

Edge Class

  public class Edge{
        public final double cost;
        public final Node target;

        public Edge(Node targetNode, double costVal){
            target = targetNode;
            cost = costVal;
        }
    }

Node Class

  class Node{
    String value;
    public double g_scores;
    public final double h_scores;
    public double f_scores = 0;
    Edge[] adjacencies;
    public Node parent;

    public Node(String val){
            this.h_scores = 0;
            value = val;
    }

    public String toString(){
            return value;
    }
   
    }

Where I made the file read data from a file that contains at least 100 lines and I want to enter a line by line that accepts all the data and that I can follow it



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source