如何使用java邻接表存储数据

avatar
作者
筋斗云
阅读量:0

在Java中,使用邻接表存储图的数据结构通常涉及到两个类:一个表示节点(或顶点),另一个表示边

  1. 首先,创建一个表示节点的类。这个类可以包含一些基本信息,例如节点的值和与该节点相邻的其他节点列表。
import java.util.ArrayList; import java.util.List;  public class Node {     private int value;     private List<Node> neighbors;      public Node(int value) {         this.value = value;         this.neighbors = new ArrayList<>();     }      public int getValue() {         return value;     }      public void setValue(int value) {         this.value = value;     }      public List<Node> getNeighbors() {         return neighbors;     }      public void setNeighbors(List<Node> neighbors) {         this.neighbors = neighbors;     }      public void addNeighbor(Node neighbor) {         this.neighbors.add(neighbor);     } } 
  1. 然后,创建一个表示图的类。这个类应该包含一个节点列表,以及一些方法来操作图,例如添加节点、添加边等。
import java.util.ArrayList; import java.util.List;  public class Graph {     private List<Node> nodes;      public Graph() {         this.nodes = new ArrayList<>();     }      public List<Node> getNodes() {         return nodes;     }      public void setNodes(List<Node> nodes) {         this.nodes = nodes;     }      public void addNode(Node node) {         this.nodes.add(node);     }      public void addEdge(Node from, Node to) {         from.addNeighbor(to);         to.addNeighbor(from); // 如果是无向图     } } 
  1. 最后,你可以创建一个测试类来实例化图并添加节点和边。
public class Main {     public static void main(String[] args) {         Graph graph = new Graph();          Node nodeA = new Node(1);         Node nodeB = new Node(2);         Node nodeC = new Node(3);          graph.addNode(nodeA);         graph.addNode(nodeB);         graph.addNode(nodeC);          graph.addEdge(nodeA, nodeB);         graph.addEdge(nodeB, nodeC);         graph.addEdge(nodeC, nodeA);          // 输出邻接表         for (Node node : graph.getNodes()) {             System.out.print("Node " + node.getValue() + " is connected to: ");             for (Node neighbor : node.getNeighbors()) {                 System.out.print(neighbor.getValue() + " ");             }             System.out.println();         }     } } 

这将创建一个包含3个节点的无向图,并输出它们的邻接表。你可以根据需要修改这些类以适应你的特定需求。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!