Java - 获取数组中的元素位置

时间:2011-09-28 09:52:57

标签: java arraylist

我熟悉我可以在数组中获取元素位置的方法,尤其是这里显示的元素:Element position in array

但我的问题是我无法弄清楚如何转换此代码以满足我的需求。

我想检查的是String是否在ArrayList中匹配,如果是,那么ArrayList中String的索引是什么。

烦人的部分是我设法验证String在ArrayList中(参见我的代码的第一行)

listPackages是ArrayList

current_package是我想在listPackages中找到它的位置的字符串。

这是我的代码:

if (listPackages.contains(current_package)) {

        int position = -1;
        for(int j = 0; j < listPackages.size(); j++) {

            if(listPackages[j] == current_package) {
              position = j;
                  break;
              }
            }
    }

非常感谢任何帮助!

谢谢!

4 个答案:

答案 0 :(得分:41)

使用indexOf

int index = listPackages.indexOf(current_package);

请注意,您通常不应使用==来比较字符串 - 这将比较引用,即两个值是否是对同一对象的引用,而不是相等的字符串。相反,您应该致电equals()。这可能是您现有代码出现问题的原因,但显然使用indexOf要简单得多。

答案 1 :(得分:3)

只需使用致电listPackages.indexOf(current_package);

即可

ArrayList.contains(Object o)在ArrayList内部调用indexOf(Object o)

/**
 * Returns <tt>true</tt> if this list contains the specified element.
 * More formally, returns <tt>true</tt> if and only if this list contains
 * at least one element <tt>e</tt> such that
 * <tt>(o==null&nbsp;?&nbsp;e==null&nbsp;:&nbsp;o.equals(e))</tt>.
 *
 * @param o element whose presence in this list is to be tested
 * @return <tt>true</tt> if this list contains the specified element
 */
public boolean contains(Object o) {
return indexOf(o) >= 0;
}

答案 2 :(得分:2)

希望这会对你有所帮助。像这样改变你的代码:

if (listPackages.contains(current_package)){
int position=listPackages.indexOf(current_package);
}

此外,如果您将位置变量设置为全局,则可以在此代码块之外访问其值。 :)

答案 3 :(得分:1)

使用indexof方法获取位置 -

listPackages.indexOf(current_package)

http://download.oracle.com/javase/1.4.2/docs/api/java/util/ArrayList.html#indexOf(java.lang.Object