Advertisement
Guest User

Untitled

a guest
Apr 28th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.19 KB | None | 0 0
  1. package airportsimulator;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.List;
  6.  
  7. /**
  8.  *
  9.  * @author torar
  10.  */
  11. public class Graph <T, W>{
  12.    
  13.     List<Node> nodeList;
  14.     HashMap<T, Node> nodes = new HashMap<>();
  15.    
  16.     public Graph(){
  17.         nodeList = new ArrayList<>();
  18.     }
  19.    
  20.     public class Node{
  21.        
  22.         T element;
  23.         List<Edge> edges;
  24.        
  25.         public Node(T element){
  26.             this.element = element;
  27.             edges = new ArrayList<>();
  28.         }
  29.     }
  30.    
  31.     public class Edge{
  32.        
  33.         Node from;
  34.         Node to;
  35.         W weight;
  36.        
  37.         public Edge(Node from, Node to, W weight){
  38.             this.from = from;
  39.             this.to = to;
  40.             this.weight = weight;
  41.         }
  42.     }
  43.    
  44.     public void addToGraph(T from, T to, W w){
  45.        
  46.         if(nodes.containsKey(from)){
  47.             for(int i = 0; i < nodes.get(from).edges.size(); i++){
  48.                 if(nodes.get(from).edges.get(i).to.element.equals(to)){
  49.                     nodes.get(from).edges.get(i).weight = w;
  50.                 }
  51.             }
  52.             if(nodes.containsKey(to)){
  53.                 Edge e = new Edge(nodes.get(from), nodes.get(to), w);
  54.                 nodes.get(from).edges.add(e);
  55.             }
  56.             else{
  57.                 Node newNode = new Node(to);
  58.                 nodes.put(to, newNode);
  59.                 nodeList.add(newNode);
  60.                 Edge e = new Edge(nodes.get(from), newNode, w);
  61.                 nodes.get(from).edges.add(e);
  62.             }
  63.         }
  64.         else if(nodes.containsKey(to)){
  65.             Node newFrom = new Node(from);
  66.             nodes.put(from, newFrom);
  67.             nodeList.add(newFrom);
  68.             Edge e = new Edge(newFrom, nodes.get(to), w);
  69.             nodes.get(from).edges.add(e);
  70.         }
  71.         else{
  72.             Node newFrom = new Node(from);
  73.             Node newTo = new Node(to);
  74.             nodes.put(from, newFrom);
  75.             nodes.put(to, newTo);
  76.             nodeList.add(newFrom);
  77.             nodeList.add(newTo);
  78.             Edge e = new Edge(newFrom, newTo, w);
  79.             nodes.get(from).edges.add(e);
  80.         }  
  81.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement