-
ループを使用してインデックスを検索する方法:
public static int findNthIndex(Object[] array, Object target, int n) { int count = 0; for (int i = 0; i < array.length; i++) { if (array[i].equals(target)) { count++; if (count == n) { return i; } } } return -1; // インデックスが見つからなかった場合 }
この方法では、指定したオブジェクトが見つかるたびにカウントを増やし、指定のn番目のインデックスを見つけたらそれを返します。もし見つからなかった場合は-1を返します。
-
Java 8以降でのストリームを使用する方法:
import java.util.Arrays; public static int findNthIndex(Object[] array, Object target, int n) { int[] indices = IntStream.range(0, array.length) .filter(i -> array[i].equals(target)) .toArray(); if (n <= indices.length) { return indices[n - 1]; } else { return -1; // インデックスが見つからなかった場合 } }
この方法では、Java 8以降のストリームを使用して、指定したオブジェクトと等しい要素のインデックスを見つけます。配列の長さを超えるn番目のインデックスが存在しない場合は-1を返します。
これらの方法は、オブジェクトの等価性(equalsメソッド)を比較することに基づいています。また、配列内のオブジェクトがnullである場合や、配列自体がnullである場合には適切な例外処理を行う必要があります。
ご参考までに、上記のコード例は一般的なケースをカバーするものであり、実際の使用に応じて適宜修正してください。