2012-04-19 12 views
0

Pythonの場合、私はarray.index(element)のように何かをして、elementindexarrayに得ることができます。 arrayListではなく、通常の配列を使用してJavaでこれを行うにはどうすればよいですか?同様の機能はありますか?pythonのJava配列類似list.index()?

答えて

5

Arrays.asListを使用してList.indexOfを使用できます。 Arrays.binarySearchを使用する他の提案は良いですが、配列をソートする必要があります。

+0

binaryingにはソートされた配列が必要です。 – twain249

+1

@ twain249公正であるために、ユーゲナーは3分早くそれを言及しました。 – jogojapan

3

Arrays.binarySearchメソッド(配列をソートする必要があります)を使用する必要があります。

アレイを並べ替えることができない場合は、1つのソリューション、つまりフルスキャンがあります。単純に配列をループして、要素のインデックスを探します。アレイをArrays.asListを使用してListに変換し、次にリストのindexOfメソッドを使用することで、同じことが達成されます。

1
あなたが行うことができます

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

または、配列がソートされている場合、あなたは

Arrays.binarySearch(); 
0

を使用することができる方法

1のいくつかあります)Arrays.binarySearch

2)ループして見つけることができます。

1

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; 
} 
+0

'element!= null && element.equals(array [i])'で安全です。 (どちらもヌルは第1の 'if'によってカバーされます)。 – trutheality

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; 
}