バナー画像

Javaでは、list内の要素を検索する方法として、大きくindexOfメソッドを利用する方法とcontainsメソッドを利用する方法が挙げられます。

本記事では、2つのメソッドの使い方を解説しながら、それぞれのメソッドの違いについてご紹介していきます。

Javaでlist内の要素を特定するならindexOfで検索


まずJavaのlistで要素のインデックス番号を検索する方法として「indexOf」メソッドを利用することが可能です。

indexOfメソッド

indexOfメソッドは、引数に検索した要素を指定することで、返り値として最初に見つかったインデックス番号が返却されます。

package test;

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
    ArrayList strList = new ArrayList();
    strList.add("いぬ"); // インデックス番号0
    strList.add("ねこ"); // インデックス番号1
    strList.add("とり"); // インデックス番号2
    strList.add("ねこ"); // インデックス番号3
    strList.add("さる"); // インデックス番号4
    strList.add("とり"); // インデックス番号5

    System.out.println(strList.indexOf("ねこ"));
  }
}

実行した結果は下記の通りです。

1

インデックス番号は「0」から数えるため、今回の場合2つ目の値、つまりインデックス番号「1」が値として返却されています。

ポテパンダの一言メモ

検索対象の値が見つからなかった場合には、「-1」が返却されます。
リストの検索は文字列だけでなく、様々な型で利用可能です。

lastIndexOfメソッド

リストから特定の要素を検索する方法として、「lastIndexOf」メソッドを利用することも可能です。

lastIndexOfメソッドを利用する場合、後ろから数えて何番目のインデックス番号で見つかったかを返却します。

package test;

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
    ArrayList strList = new ArrayList();
    strList.add("いぬ"); // インデックス番号0
    strList.add("ねこ"); // インデックス番号1
    strList.add("とり"); // インデックス番号2
    strList.add("ねこ"); // インデックス番号3
    strList.add("さる"); // インデックス番号4
    strList.add("とり"); // インデックス番号5

    System.out.println(strList.lastIndexOf("ねこ"));
  }
}

実行した結果が下記の通りです。

3

検索対象の「ねこ」は、インデックス番号「1」と「3」に格納されていますが、lastIndexOfメソッドを利用した場合、後ろから検索をスタートするため、返却値は「3」となります。

ポテパンダの一言メモ

lastIndexOfメソッドを利用した場合でも、返却されるインデックス番号は後ろから数えた値ではありません。
あくまで検索開始が後ろからというだけで、格納されているインデックス番号は前からの検索時と変わらない点を意識しておきましょう。

Javaでlist内に要素が存在するかはcontainsで検索


続いてJavaのlist内に要素が存在するかの確認には「contains」メソッドを利用することが可能です。

containsメソッド

containsメソッドでは引数に設定した値が存在するか否かを「true」「false」で返却します。

package test;

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
    ArrayList strList = new ArrayList();
    strList.add("いぬ");
    strList.add("ねこ");
    strList.add("とり");
    strList.add("ねこ");
    strList.add("さる");
    strList.add("とり");

    System.out.println(strList.contains("ねこ"));
  }
}

実行した結果が下記となります。

true

indexOfメソッドでは、要素のインデックス番号まで特定することが出来ましたが、containsメソッドの場合には引数に指定した値がリスト内に1つでも存在すれば「true」、存在しなければ「false」が返却されます。

containsAllメソッド

containsAllメソッドでは、検索元のリストに引数で設定したリストの値が全て含まれる場合のみ「true」、それ以外は「false」を返却します。

package test;

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
    ArrayList strList = new ArrayList();
    strList.add("いぬ");
    strList.add("ねこ");
    strList.add("とり");
    strList.add("ねこ");
    strList.add("さる");
    strList.add("とり");

    ArrayList searchList1 = new ArrayList();
    searchList1.add("ねこ");
    searchList1.add("とり");

    ArrayList searchList2 = new ArrayList();
    searchList2.add("ねこ");
    searchList2.add("うま");

    System.out.println("serachList1の検索結果: " + strList.containsAll(searchList1));
    System.out.println("serachList2の検索結果: " + strList.containsAll(searchList2));
  }
}

実行した結果が下記の通りです。

serachList1の検索結果: true
serachList2の検索結果: false

複数の要素をまとめて検索したい場合などには、containsAllメソッドを使って作成した検索用のコレクションクラスを一括で検索する方法が便利です。

さいごに:Javaのlist操作を理解して要素を適切に検索しよう!


本記事では、Javaのlistに格納された要素を検索する方法についてご紹介してきました。

listの検索には大きく「indexOf」メソッドと「contains」メソッドの利用が可能です。

どちらのメソッドを利用するかについては、検索結果をどのようにプログラムで利用するのか判断して、適切なメソッドを利用するようにしましょう。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。