在计算机科学中,图数据结构是一种用于表示对象之间关系的强大工具。社交网络、地图导航、网页链接等场景都离不开图的应用。本教程将带你从零开始,使用Java语言图数据结构构建基础图模型,并掌握其核心操作。

图(Graph)由顶点(Vertex,也称节点)和边(Edge)组成。边可以是有向的(如 A → B)或无向的(如 A — B)。根据边是否有权重,图又可分为带权图和无权图。
在 Java 中,我们通常使用以下两种方式来表示图:
对于大多数实际应用,邻接表实现更为常用,因此本教程将重点讲解它。
下面是一个简单的无向无权图的 Java 实现:
import java.util.*;public class Graph { private Map<Integer, List<Integer>> adjList; // 构造函数 public Graph() { adjList = new HashMap<>(); } // 添加顶点 public void addVertex(int vertex) { adjList.putIfAbsent(vertex, new ArrayList<>()); } // 添加边(无向图) public void addEdge(int src, int dest) { // 确保两个顶点都存在 addVertex(src); addVertex(dest); // 添加双向连接 adjList.get(src).add(dest); adjList.get(dest).add(src); } // 打印图 public void printGraph() { for (Map.Entry<Integer, List<Integer>> entry : adjList.entrySet()) { System.out.println("顶点 " + entry.getKey() + ": " + entry.getValue()); } }}掌握了图的构建后,下一步是学会如何遍历它。常见的图遍历算法包括 DFS 和 BFS。
public void dfs(int startVertex) { Set<Integer> visited = new HashSet<>(); dfsHelper(startVertex, visited);}private void dfsHelper(int vertex, Set<Integer> visited) { visited.add(vertex); System.out.print(vertex + " "); for (int neighbor : adjList.getOrDefault(vertex, new ArrayList<>())) { if (!visited.contains(neighbor)) { dfsHelper(neighbor, visited); } }}public void bfs(int startVertex) { Set<Integer> visited = new HashSet<>(); Queue<Integer> queue = new LinkedList<>(); visited.add(startVertex); queue.add(startVertex); while (!queue.isEmpty()) { int current = queue.poll(); System.out.print(current + " "); for (int neighbor : adjList.getOrDefault(current, new ArrayList<>())) { if (!visited.contains(neighbor)) { visited.add(neighbor); queue.add(neighbor); } } }}public class Main { public static void main(String[] args) { Graph g = new Graph(); g.addEdge(0, 1); g.addEdge(0, 2); g.addEdge(1, 2); g.addEdge(2, 3); System.out.println("图的邻接表表示:"); g.printGraph(); System.out.print("\nDFS 从顶点 0 开始: "); g.dfs(0); System.out.print("\nBFS 从顶点 0 开始: "); g.bfs(0); }}通过本教程,你已经学会了:
掌握 Java语言图数据结构 是进阶算法学习的重要一步。无论是面试还是实际开发,图的相关知识都极为实用。建议你动手敲一遍代码,加深理解!
关键词回顾:Java图数据结构、图的表示方法、邻接表实现、图遍历算法。
本文由主机测评网于2025-12-16发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025128748.html