错误检查意味着什么以及如何从另一个类调用泛型参数化方法: 以下是错误消息:
The method add(int, Integer) in the type BinaryMinHeap<Integer> is not applicable for the arguments (int, Vertex<Integer>)
调用代码段
for(Vertex<Integer> vertex : graph.getAllVertex()){
minHeap.add(Integer.MAX_VALUE, vertex);
}
被调用的方法是:
public void add(int weight,T key) {
Node node = new Node();
node.weight = weight;
node.key = key;
allNodes.add(node);
int size = allNodes.size();
int current = size - 1;
int parentIndex = (current - 1) / 2;
nodePosition.put(node.key, current);
while (parentIndex >= 0) {
Node parentNode = allNodes.get(parentIndex);
Node currentNode = allNodes.get(current);
if (parentNode.weight > currentNode.weight) {
swap(parentNode,currentNode);
updatePositionMap(parentNode.key,currentNode.key,parentIndex,current);
current = parentIndex;
parentIndex = (parentIndex - 1) / 2;
} else {
break;
}
}
}
答案 0 :(得分:0)
我不确定您要完成的任务,但是您无法将double d = 1e-234;
// using Statement works, the number gets rounded and 0 is inserted
try (Statement stmt = conn.createStatement()) {
stmt.executeUpdate("insert into test values (" + d + ")");
}
// using PreparedStatement fails, throws an IllegalArgumentException: Underflow
try (PreparedStatement stmt = conn.prepareStatement("insert into test values (?)")) {
stmt.setDouble(1, d);
stmt.executeUpdate();
}
传递给只需要Vertex<Integer>
的内容。如果要添加Integer
的每个元素,请使用嵌套循环。否则,您必须以某种方式将Vertex
映射到Vexter<Integer>
。
参见方法签名:
Integer
但是,您尝试使用BinaryMinHeap<Integer>.add(int, Integer)
调用它:Vertex<Integer> vertex
,这不适用(如错误中所述)