我有一个Vertex类型的ArrayList。 Vertex是我自己的类,它只包含一个String类型的数据成员。它有一个成员函数getName(),它返回Vertex的名称。 如果给出了特定的字符串,我想获取ArrayList中的位置。我写了下面的代码来做。但它总是返回-1,这是初始值。我的代码有什么问题?
public int map(String vname)
{
int pos=-1;
for(int i=0;i<nodes.size();i++)
{
if(nodes.get(i).getName()==vname)
{
pos=i;
break;
}
}
return pos;
}
在上面的代码中,节点是Vertex类型的ArrayList。
答案 0 :(得分:4)
在Java中==
用于对象相等,string1.equals(string2)
用于字符串相等
答案 1 :(得分:4)
使用String#equals:nodes.get(i).getName().equals(vname)
代替。 Java中的==
比较了地址
串。
答案 2 :(得分:4)
==
比较引用而不是内容。
如果情况很重要,请使用String#equals(),否则请使用String#equalsIgnoreCase()。
答案 3 :(得分:2)
您String
比较错误...
if(nodes.get(i).getName()==vname)
应该是
if(nodes.get(i).getName().equals(vname))
答案 4 :(得分:2)
将其替换为
if(nodes.get(i).getName()==vname)
到
if(nodes.get(i).getName().equals(vname))
用于将String与案例进行比较和用于比较vname而不使用案例
if(nodes.get(i).getName().equalsIgnoreCase(vname))