【发布时间】:2020-08-05 22:08:43
【问题描述】:
为有向图创建了两个 HashMap(g1 和 g2),为无向图创建了另一个,但我想要一个 HashMap 声明并在它们各自的构造函数中进行不同的初始化。
class Graphs<T, V>{
public HashMap<T, LinkedList<T>> g1;
public boolean[] visited;
public HashMap<T, LinkedList<Pair<T, V>>> g2;
static class Pair<T, V>{
public T edge;
public V w;
Pair(T i, V j){
edge = i;
w = j;
}
public String toString(){
return "(" +edge + "," + w+ ")";
}
}
Graphs(int size){
g1 = new HashMap<>();
visited = new boolean[size +1];
}
Graphs(int size, boolean weight){
g2 = new HashMap<>();
visited = new boolean[size +1];
}
public void addEdges(T u , T v){
if(!g1.containsKey(u)){
g1.put(u, new LinkedList<>());
}
if(!g1.containsKey(v)){
g1.put(v, new LinkedList<>());
}
g1.get(u).add(v);
g1.get(v).add(u);
}
public void addEdges(T u , T v , V w){
if(!g2.containsKey(u)){
g2.put(u, new LinkedList<>());
}
if(!g2.containsKey(v)){
g2.put(v, new LinkedList<>());
}
g2.get(u).add(new Graphs.Pair<T, V>(v, w));
g2.get(v).add(new Graphs.Pair<T, V>(u, w));
}
}
【问题讨论】:
-
我不太明白你在问什么。这段代码看起来像您试图使用单个类来表示两个根本不同的事物(如果您使用初始化
g1的 ctor 创建一个图形,然后调用使用g2的addEdges方法呢?) : 为什么不有两个单独的类?