对于Python,我可以执行类似array.index(element)
的操作,以获取index
中element
的{{1}}。如何使用常规数组而不是arrayList在Java中执行此操作?是否有类似的功能?
答案 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
}