我試圖替換updateEdge()方法下edge的arraylist中的值。Java數組列表重置值
在If語句中,edge.a.name和edge.b.name的值與我的源和目標值匹配,但不知何故它不會進入IF條件。
我發現了這個,edge.a = Node @ 55f96302和a.name = Node @ 55f96302。
我知道這一點,當我打印出節點地址時,兩者都不匹配。
private ArrayList<Node> nodes = new ArrayList<Node>();
private ArrayList<Edge> edges = new ArrayList<Edge>();
//add new node
public void addNode(String nodeName)
{
Node node = new Node(nodeName);
nodes.add(node);
}
//add edge
public void addEdge(String source, String dest, String weight)
{
Node a, b;
a = new Node(source);
b = new Node(dest);
Double w = Double.parseDouble(weight);
Edge edge = new Edge(a, b, w);
edges.add(edge);
}
//Check index of the node
public int indexOfNode(String name)
{
for (int i = 0; i < nodes.size(); i++)
{
if(nodes.get(i).name.equals(name))
{
return i;
}
}
return -1;
}
//update edge
public void updateEdge(String source, String dest, String weight)
{
Node a, b;
a = nodes.get(indexOfNode(source));
b = nodes.get(indexOfNode(dest));
Double w = Double.parseDouble(weight);
for(int i = 0; i < edges.size(); i++)
{
Edge edge = edges.get(i);
if(edge.a.name == a.name && edge.b.name == b.name)
{
edge.weight = w;
}
}
}
@KevinEsche謝謝主席先生。 –
ArrayList也有'indexOf'方法 – Jerry06