Java 配列のインデックス
- Java で整数型配列の要素のインデックスを取得する
- Java 8 ストリーム API を用いた配列要素のインデックスの取得
-
Java で
ArrayUtils.indexOf()
を用いて配列要素のインデックスを取得する
この記事では、Java で配列のインデックスを取得する方法を、さまざまなテクニックを使って紹介します。
Java で整数型配列の要素のインデックスを取得する
Java には配列の indexOf()
メソッドは存在しないが、指定した要素のインデックスを返す ArrayList
が付属しています。関数 indexOf()
を利用するには、まず Integer
の配列を作成し、Arrays.asList()
を用いてそれをリストに変換します。
これは、asList()
がラッパクラスしか受け付けないが、結果はプリミティブデータ型として返されるからです。以下の例では、indexOf()
メソッドに 8 という要素を指定してそのインデックスを取得しています。getIndex
の結果は int
型です。
import java.util.Arrays;
public class ArrayIndexOf {
public static void main(String[] args) {
Integer[] array1 = {2, 4, 6, 8, 10};
int getIndex = Arrays.asList(array1).indexOf(8);
System.out.println("8 is located at " + getIndex + " index");
}
}
出力:
8 is located at 3 index
Java 8 ストリーム API を用いた配列要素のインデックスの取得
ストリーム API を利用して配列の項目をフィルタリングし、指定した要素の位置を取得できます。IntStream
はプリミティブの int
がフィルタや range
のような Stream 関数を利用できるようにするためのインタフェースです。
range()
は IntStream
のメソッドであり、配列の開始位置から終了位置までの要素を返します。述語を引数に取る filter()
を使用します。述語として i -> elementToFind == array1[i]
を用い、i
は range()
から受け取った値、elementToFind == array1[i]
は elementToFind
が array1
の現在の要素と一致するかどうかを調べる条件です。
findFirst()
は最初の要素を返し、orElse()
は条件に失敗した場合に -1 を返します。
import java.util.stream.IntStream;
public class ArrayIndexOf {
public static void main(String[] args) {
int[] array1 = {1, 3, 5, 7, 9};
int elementToFind = 3;
int indexOfElement = IntStream.range(0, array1.length)
.filter(i -> elementToFind == array1[i])
.findFirst()
.orElse(-1);
System.out.println("Index of " + elementToFind + " is " + indexOfElement);
}
}
出力:
Index of 3 is 1
Java で ArrayUtils.indexOf()
を用いて配列要素のインデックスを取得する
この例では、Apache Commons Library に含まれる ArrayUtls
クラスを利用します。以下の依存関係を用いて、ライブラリの関数をプロジェクトにインポートします。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
配列のインデックスを求めるには、ArrayUtils
クラスの indexOf()
関数を使用します。indexOf()
は 2つの引数を受け付ける。第 1 引数は配列であり、第 2 引数はインデックスを求めたい要素です。
import org.apache.commons.lang3.ArrayUtils;
public class ArrayIndexOf {
public static void main(String[] args) {
int[] array1 = {1, 3, 5, 7, 9};
int elementToFind = 9;
int indexOfElement = ArrayUtils.indexOf(array1, elementToFind);
System.out.println("Index of " + elementToFind + " is " + indexOfElement);
}
}
出力:
Index of 9 is 4
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn