java - 有人可以给我一个关于如何实现一组名称的图表的示例吗?

标签 java string graph

我正在学习图表,但我很难理解当节点不是数字时如何实现?这是我在网上找到的示例代码:

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));
}
}

如何修改此代码以表示如下图:

enter image description here

最佳答案

如果名称是唯一的,那么您可以将它们放入 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/

相关文章:

来自 3D .obj 文件的 C++ 字符串标记化

javascript - 排序水平条形图 D3js

javascript - 如何更改重新图表中水平线之间的高度?

java - 谷歌云中java实验的设置?

string - 在函数调用中发送 QString 的最佳方法是什么?

java - 如何从wsdl获取方法和参数

python - 从由 "#"分隔的行值中提取最小值和最大值

java - 在 Java 中绘制图形

java - Spring - 使用模拟进行单元测试 - 如何在服务单元测试中模拟自定义收集器

java - 图像未加载到 JFrame 内的 JPanel 中