言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Java辞典

  1. トップページ
  2. Java辞典
  3. リスト.contains() / indexOf() / subList()

リスト.contains() / indexOf() / subList()

対応: Java 1.2(1998)

リストに特定の要素が含まれているかどうかを確認したり、要素の位置を取得したり、リストの一部を切り出したりするメソッドです。検索と部分参照はリスト操作の基本です。

構文

// 要素が含まれているかどうかを返します。
リスト.contains(Object o);

// 最初に一致した要素のインデックスを返します。
リスト.indexOf(Object o);

// 最後に一致した要素のインデックスを返します。
リスト.lastIndexOf(Object o);

// 指定した範囲のビュー(部分リスト)を返します。
リスト.subList(int fromIndex, int toIndex);

メソッド一覧

メソッド概要
contains(Object o)リストに指定した要素が含まれている場合は true、そうでない場合は false を返します。
indexOf(Object o)指定した要素が最初に現れるインデックスを返します。見つからない場合は -1 を返します。
lastIndexOf(Object o)指定した要素が最後に現れるインデックスを返します。見つからない場合は -1 を返します。
subList(int fromIndex, int toIndex)fromIndex から toIndex の直前までの要素を参照する部分リストのビューを返します。

サンプルコード

sample_ArrayListContainsSublist.java
import java.util.ArrayList;
import java.util.Arrays;

class ArrayListContainsSublist {
    public static void main(String[] args) {
        ArrayList<String> members = new ArrayList<>(Arrays.asList("桐生一馬", "真島吾朗", "秋山駿", "真島吾朗"));

        // contains() で要素の存在を確認します。
        System.out.println(members.contains("真島吾朗")); // 『true』と出力されます。
        System.out.println(members.contains("錦山彰"));  // 『false』と出力されます。

        // indexOf() で最初の出現位置を取得します。
        System.out.println(members.indexOf("真島吾朗"));  // 『1』と出力されます。
        System.out.println(members.indexOf("錦山彰"));   // 『-1』と出力されます。

        // lastIndexOf() で最後の出現位置を取得します。
        System.out.println(members.lastIndexOf("真島吾朗")); // 『3』と出力されます。

        // subList() で部分リストを取得します。
        java.util.List<String> sub = members.subList(1, 3); // インデックス1〜2を取得します。
        System.out.println(sub); // 『[真島吾朗, 秋山駿]』と出力されます。

        // subList() は元のリストのビューなので変更が反映されます。
        sub.clear(); // 部分リストを空にすると元のリストからも削除されます。
        System.out.println(members); // 『[桐生一馬, 真島吾朗]』と出力されます。

        // containsAll() で複数の要素をまとめて確認します。
        ArrayList<String> check = new ArrayList<>(Arrays.asList("桐生一馬", "錦山彰"));
        System.out.println(members.containsAll(check)); // 『false』と出力されます。
    }
}
javac ArrayListContainsSublist.java
java ArrayListContainsSublist
true
false
1
-1
3
[真島吾朗, 秋山駿]
[桐生一馬, 真島吾朗]
false

概要

『contains()』と『indexOf()』はどちらも内部的に先頭から順に比較するため、O(n)の計算量がかかります。大量のデータに対して頻繁に検索を行う場合は、HashSetHashMap の使用を検討してください。

『subList()』が返すのは独立したコピーではなくビュー(元のリストへの参照)です。部分リストに対する変更(set(), clear() など)は元のリストにも反映されます。独立したコピーが必要な場合は new ArrayList<>(list.subList(...)) のようにして別のリストとして保存してください。

要素の追加・取得には『add() / get()』、リストの並べ替えには『Collections.sort()』を使用してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。