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

Java-获取数组中的元素位置,java,arraylist,Java,Arraylist,我熟悉获取数组中元素位置的方法,尤其是这里显示的方法: 但我的问题是我不知道如何转换这些代码来满足我的需要 我要检查的是字符串在ArrayList中是否匹配,如果匹配,ArrayList中字符串的索引是什么 恼人的是,我设法验证了字符串是否在ArrayList中(请参阅我代码的第一行) listPackages是ArrayList current_package是我希望在listPackages中找到其位置的字符串 这是我的密码: if (listPackages.contains(curren

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

但我的问题是我不知道如何转换这些代码来满足我的需要

我要检查的是字符串在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;
              }
            }
    }
if(listPackages.contains(当前_包)){
int位置=-1;
对于(int j=0;j
非常感谢您的帮助

谢谢

使用:


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

使用indexOf方法获得位置-

listPackages.indexOf(current_package)

)

只需使用调用
listPackages.indexOf(当前\u包)

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;
}
/**
*如果此列表包含指定的元素,则返回true。
*更正式地说,当且仅当此列表包含
*至少一个元素e使得
*(o==null?e==null:o.equals(e))。
*
*@param o元素,其在该列表中的存在将被测试
*@如果此列表包含指定元素,则返回true
*/
公共布尔包含(对象o){
返回索引of(o)>=0;
}

希望这能对您有所帮助。按如下方式更改您的代码:

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

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

另外,请不要使用==来比较Java中的对象,甚至字符串。总是使用相等的方法。谢谢,你是对的。。。复制粘贴的诚实错误:)有效,但无需遍历列表两次。只需使用indexOf。如果arraylist不包含字符串,这将返回-1是的,您是对的。但是如果arraylist不包含字符串,您将尝试查找它的indexOf,会有任何异常吗?我想是的,但我没有尝试过这种类型。
if (listPackages.contains(current_package)){
int position=listPackages.indexOf(current_package);
}