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

2022-09-02 02:46:00

我熟悉在数组中获取元素位置的方法,尤其是此处显示的方法:数组中的元素位置

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

我想检查的是,字符串在 ArrayList 中是否有匹配项,如果是,ArrayList 中字符串的索引是什么。

令人讨厌的部分是我设法验证字符串是否在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;
              }
            }
    }

将不胜感激任何帮助!

谢谢!


答案 1

使用索引的

int index = listPackages.indexOf(current_package);

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


答案 2

只需使用呼叫listPackages.indexOf(current_package);

ArrayList.contains(Object o)数组列表中的内部调用: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;
}

推荐