0

对于 Python,我可以做一些事情,比如array.index(element)获取indexfor elementin array。我如何在 Java 中使用常规数组而不是 arrayList 来做到这一点?有没有类似的功能?

4

6 回答 6

5

您可以使用Arrays.asList然后使用List.indexOf. 其他使用建议Arrays.binarySearch很好,但需要对数组进行排序。

于 2012-04-19T02:08:25.203 回答
3

您必须使用Arrays.binarySearch方法(必须对数组进行排序)。

如果对数组进行排序是不可接受的,那么您只有一个解决方案 - 全扫描。只需遍历数组即可找到元素的索引。Arrays.asList同样可以通过使用列表的indexOf方法将数组转换为列表来实现。

于 2012-04-19T02:05:23.977 回答
1

你可以做:

Arrays.asList(regularArray).indexOf(elementYouWant);

或者,如果数组已排序,您可以使用

Arrays.binarySearch();
于 2012-04-19T02:09:11.150 回答
1

如果你不想使用 Java Collections 可以使用这个。你需要在你的类中实现 equals 方法。

public int index(Object[] array, Object element) {
    for(int i = 0; i < array.lenght; i++) {
        if (array[i] == element) {
            return i;
        }
        if (array[i].equals(element) {
            return i;
        }
    }
    return -1;
}
于 2012-04-19T02:09:45.530 回答
1

最好的方法是编写自己的函数。每个内置方法都有问题,例如 binarySearch 需要排序数组或为 asList 方法创建新列表对象。

使用这样的方法。

public int index( int search, int[] arr ){
  for( int i=0; i< arr.length ; i ++ )
    if( arr[ i ] == search)
     return i;
  return -1;
}
于 2012-04-19T02:12:47.617 回答
0

有几种方法

1) Arrays.binarySearch

2)或者你可以循环并找到它。

 public int getArrayIndex(int[] myArray, obj myObject)
{
  int length = Array.getLength(myArray);//get the size of the array
  for (int i = 0; i < lenght; ++i)
   {
     if (myArray[i] == myObject)
      {
        return(i);
      }
    }
   return(-1);//didn't find what I was looking for
  }
于 2012-04-19T02:09:13.763 回答