我正在学习图表,但我很难理解当节点不是数字时如何实现?这是我在网上找到的示例代码:
import java.util.*;
class Graph{
class Edge{
int v,w;
public Edge(int v,int w){
this.v=v; this.w=w;
}
@Override
public String toString(){
return "("+v+","+w+")";
}
}
List<Edge> G[];
public Graph(int n){
G=new LinkedList[n];
for(int i=0;i<G.length;i++)
G[i]=new LinkedList<Edge>();
}
boolean isConnected(int u,int v){
for(Edge i: G[u])
if(i.v==v) return true;
return false;
}
void addEdge(int u,int v,int w){
G[u].add(0,new Edge(v,w));
}
@Override
public String toString(){
String result="";
for(int i=0;i<G.length;i++)
result+=i+"=>"+G[i]+"\n";
return result;
}
}
public class GraphExample {
public static void main(String[] args) {
Graph g=new Graph(10);
g.addEdge(0, 2, 10);
g.addEdge(0, 5, 15);
g.addEdge(2, 5, 10);
g.addEdge(9, 3, 16);
System.out.println(g);
System.out.println(g.isConnected(9,3));
}
}
如何修改此代码以表示如下图:
最佳答案
如果名称是唯一的,那么您可以将它们放入 HashMap
中并存储每个名称的 hashCode
:
Map<String, Integer> map = new HashMap<>();
Arrays.asList("A", "B", "C").forEach(name -> map.put(name, name.hashCode()));
然后将 name 的 hashCode
值放入图表中。
这称为双射,在编程中非常方便:)
关于java - 有人可以给我一个关于如何实现一组名称的图表的示例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52458251/