この投稿では、Javaのプリミティブアレイまたはオブジェクトアレイで要素のインデックスを見つける方法について説明します。

ソリューションは、必要な要素の最初の出現のインデックスを返すか、アレイに存在しない場合は-1を返す必要があります。

1.素朴な解決策–線形探索

単純な解決策は、指定されたアレイに対して線形検索を実行して、ターゲット要素がアレイに存在するかどうかを判断することです。

⮚プリミティブアレイの場合:

⮚オブジェクトアレイの場合:

2.Java8ストリームの使用

以下に示すように、Java 8 Streamを使用して、プリミティブおよびオブジェクトアレイ内の要素のインデックスを見つけることができます。

⮚プリミティブアレイの場合:

⮚オブジェクトアレイの場合:

3.リストに変換

アイデアは、指定されたアレイをリストに変換し、 List.indexOf() このリストで指定された要素の最初の出現のインデックスを返すメソッド。

⮚プリミティブアレイの場合:

プリミティブ整数アレイを List<Integer> に変換する方法は?

⮚オブジェクトアレイの場合:

オブジェクトアレイをリストに変換する方法は?

ソートされたアレイの場合、次を使用できます バイナリ検索アルゴリズム 指定されたアレイで指定された値を検索します。

⮚プリミティブアレイの場合:

⮚オブジェクトアレイの場合:

5.Guavaライブラリの使用

⮚プリミティブアレイの場合:

Guavaライブラリは、プリミティブに関連するいくつかのユーティリティクラスを提供します。 Ints intの場合、 Longs 長い間、 Doubles ダブルの場合、 Floats フロート用、 Booleans ブール値など。

各ユーティリティクラスには、 indexOf() アレイ内のターゲットの最初の出現のインデックスを返すメソッド。使用することもできます lastIndexOf() アレイ内のターゲットの最後の出現のインデックスを返します。

⮚オブジェクトアレイの場合:

Guava’s com.google.commons.collect.Iterables クラスには静的ユーティリティメソッドが含まれています indexOf(Iterator, Predicate) これは、指定された述語を満たす最初の要素のインデックスを返します。イテレータにそのような要素がない場合は-1を返します。

 
使用することもできます com.google.common.base.Predicates に関連する静的ユーティリティメソッドを含むGuavaによって提供されるクラス Predicate インスタンス。

 
Java 8以降では、ラムダ式を使用できます。

6. ApacheCommonsLangの使用

Apache Commons Lang ArrayUtils クラスには、プリミティブアレイまたはオブジェクトアレイを操作するいくつかの静的ユーティリティメソッドが含まれています。それは提供します indexOf() アレイ内の指定された値のインデックスを見つけるメソッド。

⮚プリミティブアレイの場合:

⮚オブジェクトアレイの場合:

これで、Javaのアレイ内の要素のインデックスを見つけることができます。