【Java】Listの要素を検索してインデックス番号を取得する

今回の記事ではListの要素を検索してインデックス番号を取得する方法を解説しています。List及びArrayListにはindexOfメソッドとlastIndexOfメソッドが用意されているのでこのメソッドを使うことで検索することができます。

サンプルコード

import java.util.List;
import java.util.ArrayList;

class ListTest {
    public static void main(String[] args) {
        List<String> colors = new ArrayList<>();

        colors.add("red");
        colors.add("blue");
        colors.add("green");
        colors.add("brack");
        colors.add("blue");
        colors.add("white");

        int firstBlueIndex = colors.indexOf("blue");
        int lastBlueIndex = colors.lastIndexOf("blue");
        int firstYellowIndex = colors.indexOf("yellow");
        int lastYellowIndex = colors.lastIndexOf("yellow");

        if(firstBlueIndex >= 0 ){
            System.out.println("colorsの中にblueは" + firstBlueIndex + "番目にあります。");
        }else {
            System.out.println("colorsの中にblueは存在しません。");
        }

        if(lastBlueIndex >= 0 ){
            System.out.println("colorsの中で最後のblueは" + lastBlueIndex + "番目にあります。");
        }else {
            System.out.println("colorsの中にblueは存在しません。");
        }

        if(firstYellowIndex >= 0 ){
            System.out.println("colorsの中にyellowは" + firstYellowIndex + "番目にあります。");
        }else {
            System.out.println("colorsの中にyellowは存在しません。");
        }
        
        if(lastYellowIndex >= 0 ){
            System.out.println("colorsの中にyellowは" + lastYellowIndex + "番目にあります。");
        }else {
            System.out.println("colorsの中にyellowは存在しません。");
        }
    }
}

Listを準備する

List<String> colors = new ArrayList<>();

colors.add("red");
colors.add("blue");
colors.add("green");
colors.add("brack");
colors.add("blue");
colors.add("white");

まずはListの準備をします。宣言と初期化をしてaddメソッドを使って要素を追加します。今回はcolorsというListを作って色の名前を追加しました。

要素が含まれているか検索する

int firstBlueIndex = colors.indexOf("blue");
int firstYellowIndex = colors.indexOf("yellow");
int lastBlueIndex = colors.lastIndexOf("blue");
int lastYellowIndex = colors.lastIndexOf("yellow");

この記事の本題です。indexOfメソッドに引数として検索したい値を渡します。indexOfではListの中で最初に現れるインデックス番号を返します。もし引数として渡した要素がなければ-1が返ってきます。

今回の例でいくとblueが最初に出てくるのは1番目の要素なのでfirstBlueIndexには1が格納されます。yellowはListには含まれないので−1が返ってきてfirstYellowIndexには-1が格納されます。

次にlastIndexOfメソッドを使うことでそのリスト内の最後のindexが返却されます。よってblueを渡すと4が返ってきてListの中に含まれないyellowを渡すと-1が返ってきます。

動作確認

これをそれぞれif文で条件判定して出力して出力します。実行結果は以下の通りになります。

java ListTest
colorsの中にblueは1番目にあります。
colorsの中にyellowは存在しません。
colorsの中で最後のblueは4番目にあります。
colorsの中にyellowは存在しません。

コメント

タイトルとURLをコピーしました