用于python list.index()的Java数组模拟?

时间:2012-04-19 01:59:36

标签: java python list

对于Python,我可以执行类似array.index(element)的操作,以获取indexelement的{​​{1}}。如何使用常规数组而不是arrayList在Java中执行此操作?是否有类似的功能?

6 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

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

如果排序数组是不可接受的,那么您只有一个解决方案 - 完全扫描。只需循环遍历数组即可找到元素的索引。通过使用Arrays.asList将数组转换为List然后使用list' s indexOf方法,可以实现相同的目标。

答案 2 :(得分:1)

你可以这样做:

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

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

Arrays.binarySearch();

答案 3 :(得分: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;
}

答案 4 :(得分: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;
}

答案 5 :(得分: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
  }