我有一个带有两个泛型类型变量T和E的类如下:
onPause
我要在public class AdjacencyList<T,E> {
HashMap<T, LinkedList<E>> adj =
new HashMap<T, LinkedList<E>>();
void addToList(T source, E dest){
if(adj.containsKey(source)){
LinkedList<E> list = adj.get(source);
list.add(dest);
}
else{
LinkedList<E> list = new LinkedList<E>();
list.add(dest);
adj.put(source, list);
}
}
}
中添加其对象的自定义类:
AdjacencyList
public class GraphVertex<T,E> {
T name;
boolean visited;
ArrayList<GraphVertex<T, E>> neighbors;
Color color;
}
是我要将GraphTraversals
的对象添加到GraphVertex
(在方法AdjacencyList
中)的类,如下所示:
createAdjList
但public class GraphTraversals {
public static void main(String[] args) {
AdjacencyList<GraphVertex<T,E>, GraphVertex<T,E>> a = new AdjacencyList<>();
GraphTraversals g = new GraphTraversals();
g.createAdjList(a);
}
<T,E> void createAdjList(AdjacencyList<GraphVertex<T,E>, GraphVertex<T,E>> a){
a.addToList(createAVertex(1), createAVertex(3));
}
}
的泛型类型不支持AdjacencyList
的自定义对象。为什么这样 !!我怎样才能实现这个功能?
答案 0 :(得分:1)
您对声明有疑问:
AdjacencyList<GraphVertex<T,E>, GraphVertex<T,E>> a = new AdjacencyList<>();
您需要使用具体类替换T和E,而不是使用模板参数。
BTW:看看Map界面中的新computeIfAbsent方法......
答案 1 :(得分:0)
看起来您应该写a.addToList(1, 3)
或使用AdjacencyList<GraphVertex, GraphVertex>
。现在你的顶点是整数,你需要传递整数。