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

Java

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

「独学が不安…」そんな方はTechAcademyの無料キャリアカウンセリングに参加して、プロの講師に気軽に相談してみましょう!

indexOfメソッドとlastIndexOfメソッドを使う

検索したいListに対してindexOfメソッド、もしくはlastIndexOfメソッドを使用することで要素の検索を行うことができます。

引数に検索したい値を渡すと要素が含まれるint型のインデックス番号が戻り値として返ってきます。

要素がList内に存在しない場合は−1が返却されます。

// 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");

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のListで要素の検索を行う方法を解説しました!Listは実務でも利用することが多いので、使えるようにしっかりと勉強しておきたいです。

「エンジニアとして自由な働き方を手に入れたい!」というあなた。まずはTech Academyの無料キャリアカウンセリングに参加してみましょう!

コメント

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