import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class Graph1<T> {
private final Map<T, Set<T>> nodes;
public Graph1() {
nodes = new HashMap<>();
}
public void addNode(T node) {
nodes.putIfAbsent(node, new HashSet<>());
}
public void addEdge(T from, T to) {
nodes.computeIfAbsent(from, k -> new HashSet<>()).add(to);
nodes.computeIfAbsent(to, k -> new HashSet<>()).add(from);
}
public Set<T> getNeighbors(T node) {
return nodes.getOrDefault(node, new HashSet<>());
}
public Set<T> getNodes() {
return new HashSet<>(nodes.keySet());
}
public static void main(String[] args) {
Graph1<String> graph = new Graph1<>();
// 添加节点
graph.addNode("A");
graph.addNode("B");
graph.addNode("C");
// 添加边
graph.addEdge("A", "B");
graph.addEdge("A", "C");
graph.addEdge("B", "C");
// 获取节点的邻居
System.out.println(graph.getNeighbors("A")); // 输出:[B, C]
System.out.println(graph.getNeighbors("B")); // 输出:[A, C]
System.out.println(graph.getNeighbors("C")); // 输出:[A, B]
// 获取图中的所有节点
System.out.println(graph.getNodes()); // 输出:[A, B, C]
}
}