获取ArrayList中给定项的位置

时间:2013-05-24 06:16:39

标签: java

我有一个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。

5 个答案:

答案 0 :(得分:4)

在Java中==用于对象相等,string1.equals(string2)用于字符串相等

答案 1 :(得分:4)

使用String#equalsnodes.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))