Pythonの場合、 inのforarray.index(element)
を取得するようなことができます。arrayListではなく、通常の配列を使用してJavaでこれを行うにはどうすればよいですか? 同様の機能はありますか?index
element
array
6 に答える
を使用してArrays.asList
から使用できますList.indexOf
。使用する他の提案Arrays.binarySearch
は適切ですが、配列をソートする必要があります。
メソッドを使用する必要がありますArrays.binarySearch
(配列をソートする必要があります)。
配列の並べ替えが受け入れられない場合、解決策は 1 つだけです。フル スキャンです。単純に配列をループして、要素のインデックスを見つけます。リストのメソッドを使用して配列をリストに変換しArrays.asList
、次にリストのindexOf
メソッドを使用することによって、同じことが達成できます。
できるよ:
Arrays.asList(regularArray).indexOf(elementYouWant);
または、配列がソートされている場合は、使用できます
Arrays.binarySearch();
Java コレクションを使用したくない場合は、これを使用できます。クラスに 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;
}
最善の方法は、独自の関数を作成することです。各組み込みメソッドには、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;
}
いくつかの方法があります
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
}