Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package airportsimulator;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- /**
- *
- * @author torar
- */
- public class Graph <T, W>{
- List<Node> nodeList;
- HashMap<T, Node> nodes = new HashMap<>();
- public Graph(){
- nodeList = new ArrayList<>();
- }
- public class Node{
- T element;
- List<Edge> edges;
- public Node(T element){
- this.element = element;
- edges = new ArrayList<>();
- }
- }
- public class Edge{
- Node from;
- Node to;
- W weight;
- public Edge(Node from, Node to, W weight){
- this.from = from;
- this.to = to;
- this.weight = weight;
- }
- }
- public void addToGraph(T from, T to, W w){
- if(nodes.containsKey(from)){
- for(int i = 0; i < nodes.get(from).edges.size(); i++){
- if(nodes.get(from).edges.get(i).to.element.equals(to)){
- nodes.get(from).edges.get(i).weight = w;
- }
- }
- if(nodes.containsKey(to)){
- Edge e = new Edge(nodes.get(from), nodes.get(to), w);
- nodes.get(from).edges.add(e);
- }
- else{
- Node newNode = new Node(to);
- nodes.put(to, newNode);
- nodeList.add(newNode);
- Edge e = new Edge(nodes.get(from), newNode, w);
- nodes.get(from).edges.add(e);
- }
- }
- else if(nodes.containsKey(to)){
- Node newFrom = new Node(from);
- nodes.put(from, newFrom);
- nodeList.add(newFrom);
- Edge e = new Edge(newFrom, nodes.get(to), w);
- nodes.get(from).edges.add(e);
- }
- else{
- Node newFrom = new Node(from);
- Node newTo = new Node(to);
- nodes.put(from, newFrom);
- nodes.put(to, newTo);
- nodeList.add(newFrom);
- nodeList.add(newTo);
- Edge e = new Edge(newFrom, newTo, w);
- nodes.get(from).edges.add(e);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement