JavaのArrayListの検索方法 【for文・拡張for文・ラムダ式】

はじめに

久しぶりのブログ更新となりますね。
最近は何かと忙しく、なかなかブログを更新することができませんでした。(悲しい...)
近況報告をすると、夏の間はインターンシップに参加していました。
最近だとCodeCandyを改良したり、オープンキャンパスでの展示などを行っていました。
そして研究室にも配属されて新たな大学生活がスタートしました。
また今後も、のんびりきままにブログを更新していきたいと思っています。

本題

今回は、私が最近一番使っていると言っても過言ではないJavaについてのお話です。 最近Javaをよく使うようになったのですが、その中でもArrayListをよく使います。 ArrayListは簡単に言うと可変長の配列みたいなものです。 今回はそのArrayListにおける検索方法についてまとめていきたいと思います。

前提

利用するArrayListは以下のものとします。

ArrayList<Integer> numberList = new ArrayList<Integer>();

// 値の格納
numberList.add(1);
numberList.add(10):
numberList.add(100);
numberList.add(1000);

そして肝心の検索方法についてですが、今回はfor文・拡張for文・ラムダ式について説明していきます。

for文

サンプルコード

for (int index = 0; index < numberList.size(); i++) {
    System.out.println(numberList.get(index));
}

//  出力結果
// 1
// 10
// 100
// 1000

これが一番初心者の方にもとっつきやすい検索方法じゃないでしょうか。 配列の検索方法と同様にArrayListの検索を行います。 配列はlengthで長さを取得できましたが、ArrayListはsize()で長さを取得することができます。 また要素は、get(要素番号)で取得することができます。

拡張for文

サンプルコード

for (int number: numberList) {
      System.out.println(number);
}

//  出力結果
// 1
// 10
// 100
// 1000

先程のfor文による操作よりもコンパクトになって見やすくなったと思います。 この方法だと、ArrayListの最初から最後までを順番に操作することになります。 要素番号を取得する必要がない時や、処理の途中でbreakしたい時などには便利に使えそうです。

ラムダ式

サンプルコード

numberList.forEach(number -> {
    System.out.println(number)
});

//  出力結果
// 1
// 10
// 100
// 1000

ラムダ式はJava8から実装された機能です。 拡張for文より簡素に、そして直感的に書けるようになりました。 拡張for文との違いとして、拡張for文で利用する変数には型が必要でしたが、ラムダ式で利用する変数には型の宣言が必要なくなっています。 ただラムダ式は検索の途中でbreakすることができないので注意が必要です。

まとめ

雑になってしまいましたが、ArrayListの操作方法についてまとめてみました。
基本的には、直感的に何を行っているのかわかるラムダ式を使うのがいいと思いますが、検索途中でbreakする場合は拡張for文、要素番号が欲しい時はfor文を使うなど、用途に合わせて使い分けすれば便利に使えるのではないでしょうか。