
今回の記事ではListの要素を検索してインデックス番号を取得する方法を解説しています。
List及びArrayListにはindexOfメソッドとlastIndexOfメソッドが用意されているのでこのメソッドを使うことで検索することができます。
indexOfメソッドとlastIndexOfメソッドで検索する
検索したいListに対してindexOfメソッド、もしくはlastIndexOfメソッドを使用することで要素の検索を行うことができます。
indexOfでListの検索を行う
indexOfメソッドを使うことで、Listの何番目に指定した要素が何番目に含まれているか検索することができます。
同じ要素が複数Listに含まれている場合は、最初の要素が何番目かを検索して、結果を返却します。
引数で渡した要素が存在しない場合は、「-1」が返却されます。
int 変数名 = Listオブジェクト.indexOf(検索する要素);
lastIndexOfで要素の検索を行う
lastIndexOfを使うことで、Listの一番後ろの要素のインデックスを検索して取得することができます。
こちらも引数で渡した要素が存在しない場合には「−1」が返却されます。
int 変数名 = Listオブジェクト.lastIndexOf(検索する要素);
Listの検索を行うサンプルコード
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は実務でも利用することが多いので、使えるようにしっかりと勉強しておきたいです。
プログラミング学習はUdemyがおすすめ
私はプログラミングの学習はUdemyで行うのが一番おすすめです。
Udemyでは動画講座でプログラミングなどのスキルを身につけることができます。
現役エンジニアがUdemyをオススメする理由は
・動画で好きなときに学べる
・一流の講師に学ぶことができる
・講師の方に質問ができる
・返金保証もある
・セールを頻繁に開催している
といったたくさんの理由があります。
現在Udemyではセールを開催しています!
通常時1万円から2万円前後の価格で講座が販売されていますが、セール時には1500円前後(ランチ代くらい)で一つの講座を購入することができます。
UdemyにはサーブレットでWebアプリ開発が学べる講座もあるので、JavaでWebアプリ開発する方法を学んでみたい!という方は今がチャンスです!
独学が不安な人へ
独学で学んでいく意志がある方にはUdemyなどで学習するのがおすすめですが、プログラミングを独学するにはそれなりにハードルがあります。
- プログラミングで一度挫折した経験がある
- 一人で学習する自信がないので、サポートが欲しい
という方にはプログラミングスクールを検討してみるのがおすすめです。