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

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

サンプルコード

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

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

        // colorsに要素を追加
        colors.add("red");
        colors.add("blue");
        colors.add("green");
        colors.add("brack");
        colors.add("blue");
        colors.add("white");

        // Listの中で最初のblueが何番目か検索
        int firstBlueIndex = colors.indexOf("blue");
        // 最後のblueが何番目か検索
        int lastBlueIndex = colors.lastIndexOf("blue");
        // 最初のyellowが何番目か検索
        int firstYellowIndex = colors.indexOf("yellow");
        // 最後の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 lastBlueIndex = colors.lastIndexOf("blue");
int firstYellowIndex = colors.indexOf("yellow");
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の中で最後のblueは4番目にあります。
colorsの中にyellowは存在しません。
colorsの中にyellowは存在しません。

おすすめのJava入門書

 

私はプログラミング学習はUdemyで行うのが以下のような理由で圧倒的におすすめです。

    • 動画で好きなときに学べる
    • 一流のエンジニアから教えてもらえる
    • 好きな技術を体系的に学べる
    • 実際に手を動かしながら学ぶことができる
    • セール時であれば1500円〜2000円ほどで購入できる(大半の技術書より安い)
    • 講座自体がアップデートされていくので情報が古くなりにくい

UdemyにはJavaの基礎講座 もあるので興味がある方は一度チェックしてみてください!

また無料でJavaが学べるスクールもあります!説明会も行っているので、一度参加してJavaを学んでみるのもオススメです!

コメント

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