【问题标题】:Java - get element position in arrayJava - 获取数组中的元素位置
【发布时间】:2011-09-28 09:52:57
【问题描述】:

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

但我的问题是我不知道如何转换此代码以满足我的需要。

我要检查的是字符串是否在 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;
              }
            }
    }

不胜感激!

谢谢!

【问题讨论】:

  • 另外,请不要使用 == 来比较 Java 中的对象,甚至是字符串。始终使用 equals 方法。
  • 谢谢,你是对的......复制粘贴的诚实错误:)

标签: java arraylist


【解决方案1】:

使用indexOf:

int index = listPackages.indexOf(current_package);

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

【讨论】:

    【解决方案2】:

    希望这对您有所帮助。像这样更改您的代码:

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

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

    【讨论】:

    • 有效,但无需遍历列表两次。只需使用 indexOf。如果 arraylist 不包含字符串,这将返回 -1
    • 是的,你是对的。但是如果这个 ArrayList 不包含字符串,你会尝试找到它的 indexOf。会有任何异常吗?我想是的,但我没有尝试过这种类型。
    【解决方案3】:

    使用indexof方法获取位置-

    listPackages.indexOf(current_package)
    

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

    【讨论】:

      【解决方案4】:

      只需拨打电话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;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-26
        相关资源
        最近更新 更多