对于 Python,我可以做一些事情,比如array.index(element)
获取index
for element
in array
。我如何在 Java 中使用常规数组而不是 arrayList 来做到这一点?有没有类似的功能?
问问题
254 次
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 回答