Java 配列のインデックス

Rupam Yadav 2023年10月12日
  1. Java で整数型配列の要素のインデックスを取得する
  2. Java 8 ストリーム API を用いた配列要素のインデックスの取得
  3. Java で ArrayUtils.indexOf() を用いて配列要素のインデックスを取得する
Java 配列のインデックス

この記事では、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] を用い、irange() から受け取った値、elementToFind == array1[i]elementToFindarray1 の現在の要素と一致するかどうかを調べる条件です。

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 Yadav
Rupam Yadav avatar Rupam Yadav avatar

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

関連記事 - Java Array