要自定义一个Java邻接表类,首先需要了解邻接表的基本概念。邻接表是一种表示图的数据结构,它通过映射每个顶点到其相邻顶点的列表来表示图。在Java中,可以使用Map和List来实现邻接表。
以下是一个简单的邻接表类的实现:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AdjacencyList<T> {
// 使用Map和List来存储邻接表
private Map<T, List<T>> adjacencyList = new HashMap<>();
// 添加顶点
public void addVertex(T vertex) {
if (!adjacencyList.containsKey(vertex)) {
adjacencyList.put(vertex, new ArrayList<>());
}
}
// 添加边
public void addEdge(T from, T to) {
if (!adjacencyList.containsKey(from)) {
addVertex(from);
}
if (!adjacencyList.containsKey(to)) {
addVertex(to);
}
adjacencyList.get(from).add(to);
}
// 获取顶点的相邻顶点列表
public List<T> getAdjacentVertices(T vertex) {
return adjacencyList.get(vertex);
}
// 获取所有顶点
public List<T> getVertices() {
return new ArrayList<>(adjacencyList.keySet());
}
}
这个类可以用于表示任何类型的图,例如无向图、有向图等。你可以根据需要对这个类进行扩展,例如添加删除顶点和边的方法、检查图中是否存在某个顶点或边等。