モジュール java.base
パッケージ java.util

インタフェースList<E>

型パラメータ:
E - このリスト内に存在する要素の型
すべてのスーパー・インタフェース:
Collection<E>, Iterable<E>
既知のすべての実装クラス:
AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector

public interface List<E> extends Collection<E>
順序付けられたコレクションです。シーケンスとも呼ばれます。 このインタフェースのユーザーは、リスト内のどこに各要素が挿入されるかを精密に制御できます。 ユーザーは整数値のインデックス(リスト内の位置)によって要素にアクセスしたり、リスト内の要素を検索したりできます。

セットとは異なり、通常、リストは重複する要素を許可します。 つまり、リストは通常、e1.equals(e2)となるようなe1e2の要素のペアを許可します。また、null要素を許可する場合には、通常は複数のnull要素を許可します。 ユーザーが重複する値を挿入しようとしたときに実行時の例外をスローすることにより、重複する値を禁止するリストを実装する場合もありますが、このように使われることはほとんどありません。

Listインタフェースは、iteratoraddremoveequals、およびhashCodeの各メソッドの規約に対して、Collectionインタフェースで指定されているものに加えてさらに条項を追加します。 便宜上、ほかの継承メソッドの宣言もここに含まれます。

Listインタフェースは、位置を指定して(インデックスで)リストの要素にアクセスするための4つのメソッドを提供します。 Java配列と同様に、Listのインデックスは0から始まります。 一部の実装(LinkedListクラスなど)では、これらのオペレーションの実行にはインデックス値に比例した時間がかかる場合があります。 このため、呼出し側がこうした実装について知らない場合は、リストにインデックスを付けるよりも、リスト内の要素を反復してください。

Listインタフェースは、Iteratorインタフェースが提供する通常のオペレーションに加えて、要素の挿入、置換、および双方向アクセスを可能にする、ListIteratorという特殊なイテレータを提供します。 リスト内の指定した位置から開始するリスト・イテレータを取得するためのメソッドが提供されています。

Listインタフェースは、指定したオブジェクトを検索するための2つのメソッドを提供します。 パフォーマンスの観点からは、これらのメソッドは注意して使用する必要があります。 多くの実装でこれらのメソッドは、時間のかかる線形探索を実行します。

リスト内の任意の位置に複数の要素を効率的に挿入および削除するために、Listインタフェースは2つのメソッドを提供します。

ノート: リストにリスト自体を要素として格納することも可能ですが、十分注意してください。そのようなリストではequalsメソッドおよびhashCodeメソッドの動作は保証されません。

リストの実装には、格納できる要素に制限があるものもあります。 たとえば、null要素を禁止する実装や、null要素の型に制限がある実装もあります。 不適格な要素を追加しようとすると、通常NullPointerExceptionまたはClassCastExceptionのような非チェック例外がスローされます。 不適格な要素を照会しようとすると、例外がスローされる場合や、ただfalseを返す場合もあります。前者の動作を実行する実装もあれば、後者の動作を実行する実装もあります。 もう少し一般的に言うと、不適当な要素を処理しようとしてリストへの挿入が完了しない場合、例外がスローされるか成功するかは実装の任意です。 このインタフェースの仕様では、そうした例外は「任意」と記載されています。

変更不可能なリスト

List.ofおよびList.copyOf静的ファクトリ・メソッドは、変更不可能なリストを作成する便利な方法を提供します。 これらのメソッドによって作成されたListインスタンスには、次の特性があります:

  • 彼らはunmodifiableです。 要素を追加、削除、または置換することはできません。 Listで任意のmutatorメソッドを呼び出すと、常にUnsupportedOperationExceptionがスローされます。 ただし、含まれている要素自体が変更可能な場合は、Listコンテンツが変更されているように見えることがあります。
  • それらはnull要素を許可しません。 null要素でそれらを作成しようとすると、NullPointerExceptionになります。
  • すべての要素が直列化可能な場合、これらは直列化可能です。
  • リスト内の要素の順序は、提供された引数の順序、または指定された配列内の要素の順序と同じです。
  • リストとそのsubListビューは、RandomAccessインタフェースを実装します。
  • 彼らはvalue-basedです。 プログラマは、equalのインスタンスを交換可能として処理し、同期に使用しないようにする必要があります。そうしないと、予期しない動作が発生する可能性があります。 たとえば、将来のリリースでは、同期が失敗する可能性があります。 呼び出し側は、返されたインスタンスのアイデンティティについては何も仮定しないでください。 ファクトリは、新しいインスタンスを作成したり既存のインスタンスを再利用することは自由です。
  • それらは、「直列化された形式」ページで指定されたとおりに直列化されます。

このインタフェースは、Java Collections Frameworkのメンバーです。

導入されたバージョン:
1.2
関連項目:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    add(int index, E element)
    このリスト内の指定された位置に、指定された要素を挿入します(オプションの操作)。
    boolean
    add(E e)
    指定された要素をこのリストの最後に追加します(オプションの操作)。
    boolean
    addAll(int index, Collection<? extends E> c)
    指定されたコレクション内のすべての要素を、このリストの指定された位置に挿入します(オプションの操作)。
    boolean
    addAll(Collection<? extends E> c)
    指定されたコレクション内のすべての要素を、指定されたコレクションのイテレータによって返される順序で、このリストの最後に追加します(オプションの操作)。
    void
    すべての要素をこのリストから削除します(オプションの操作)。
    boolean
    指定された要素がこのリストに含まれている場合にtrueを返します。
    boolean
    指定されたコレクションのすべての要素がこのリストに含まれている場合にtrueを返します。
    static <E> List<E>
    copyOf(Collection<? extends E> coll)
    指定されたCollectionの要素をその反復順序で含む「変更不可能なリスト」を返します。
    boolean
    指定されたオブジェクトがこのリストと等しいかどうかを比較します。
    get(int index)
    このリスト内の指定された位置にある要素を返します。
    int
    このリストのハッシュ・コード値を返します。
    int
    指定された要素がこのリスト内で最初に検出された位置のインデックスを返します。指定された要素がこのリストにない場合は -1を返します。
    boolean
    このリストに要素がない場合にtrueを返します。
    このリスト内の要素を適切な順序で反復するイテレータを返します。
    int
    指定された要素がこのリスト内で最後に検出された位置のインデックスを返します。指定された要素がこのリストにない場合は -1を返します。
    このリスト内の要素を(適切な順序で)反復するリスト・イテレータを返します。
    listIterator(int index)
    リスト内の指定された位置で始まる、リスト内の要素を(適切な順序で)反復するリスト・イテレータを返します。
    static <E> List<E>
    of()
    ゼロ要素を含む変更不可能なリストを返します。
    static <E> List<E>
    of(E e1)
    1つの要素を含む変更不可能なリストを返します。
    static <E> List<E>
    of(E... elements)
    任意の数の要素を含む変更不可能なリストを返します。
    static <E> List<E>
    of(E e1, E e2)
    2つの要素を含む変更不可能なリストを返します。
    static <E> List<E>
    of(E e1, E e2, E e3)
    3つの要素を含む変更不可能なリストを返します。
    static <E> List<E>
    of(E e1, E e2, E e3, E e4)
    4つの要素を含む変更不可能なリストを返します。
    static <E> List<E>
    of(E e1, E e2, E e3, E e4, E e5)
    5つの要素を含む変更不可能なリストを返します。
    static <E> List<E>
    of(E e1, E e2, E e3, E e4, E e5, E e6)
    6つの要素を含む変更不可能なリストを返します。
    static <E> List<E>
    of(E e1, E e2, E e3, E e4, E e5, E e6, E e7)
    7つの要素を含む変更不可能なリストを返します。
    static <E> List<E>
    of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8)
    8つの要素を含む変更不可能なリストを返します。
    static <E> List<E>
    of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9)
    9つの要素を含む変更不可能なリストを返します。
    static <E> List<E>
    of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9, E e10)
    10個の要素を含む変更不可能なリストを返します。
    remove(int index)
    このリスト内の指定された位置にある要素を削除します(オプションの操作)。
    boolean
    指定された要素がこのリストにあれば、その最初のものをリストから削除します(オプションの操作)。
    boolean
    このリストから、指定されたコレクションに含まれる要素をすべて削除します(オプションの操作)。
    default void
    このリストの各要素を、その要素に演算子を適用した結果で置換します。
    boolean
    このリスト内で、指定されたコレクションに含まれている要素だけを保持します(オプションの操作)。
    set(int index, E element)
    このリスト内の指定された位置にある要素を、指定された要素に置き換えます(オプションの操作)。
    int
    このリスト内にある要素の数を返します。
    default void
    sort(Comparator<? super E> c)
    指定されたComparatorが示す順序に従って、このリストをソートします。
    default Spliterator<E>
    このリスト内の要素に対するSpliteratorを作成します。
    subList(int fromIndex, int toIndex)
    このリストの、指定されたfromIndex (これを含む)からtoIndex (これを含まない)までの部分のビューを返します。
    このリスト内のすべての要素を適切な順序で(最初の要素から最後の要素へ)含んでいる配列を返します。
    <T> T[]
    toArray(T[] a)
    このリスト内のすべての要素を適切な順序で(最初の要素から最後の要素へ)含んでいる配列を返します。返される配列の実行時の型は、指定された配列の型になります。

    インタフェース java.util.Collectionで宣言されたメソッド

    parallelStream, removeIf, stream, toArray

    インタフェース java.lang.Iterableで宣言されたメソッド

    forEach
  • メソッドの詳細

    • size

      int size()
      このリスト内にある要素の数を返します。 このリストにInteger.MAX_VALUEより多くの要素がある場合は、Integer.MAX_VALUEを返します。
      定義:
      size、インタフェースCollection<E>
      戻り値:
      このリスト内の要素数
    • isEmpty

      boolean isEmpty()
      このリストに要素がない場合にtrueを返します。
      定義:
      isEmpty、インタフェースCollection<E>
      戻り値:
      このリストに要素が含まれていない場合はtrue
    • contains

      boolean contains(Object o)
      指定された要素がこのリストに含まれている場合にtrueを返します。 より正式には、このリストにObjects.equals(o, e)などの少なくとも1つの要素eが含まれている場合にのみtrueを返します。
      定義:
      contains、インタフェースCollection<E>
      パラメータ:
      o - このリスト内にあるかどうかが判定される要素
      戻り値:
      指定された要素がこのリスト内にある場合はtrue
      例外:
      ClassCastException - 指定された要素の型が、このリストと互換でない場合(オプション)
      NullPointerException - 指定された要素がnullで、このリストがnull要素を許可しない場合(オプション)
    • iterator

      Iterator<E> iterator()
      このリスト内の要素を適切な順序で反復するイテレータを返します。
      定義:
      iterator、インタフェースCollection<E>
      定義:
      iterator、インタフェースIterable<E>
      戻り値:
      リスト内の要素を適切な順序で反復するイテレータ
    • toArray

      Object[] toArray()
      このリスト内のすべての要素を適切な順序で(最初の要素から最後の要素へ)含んでいる配列を返します。

      返される配列は、それへの参照がこのリストで保持されない場合に、安全になります。 (つまり、このメソッドは、このリストが配列に連動している場合でも、新しい配列を割り当てる必要があります。) このため、呼出し側は、返された配列を自由に変更できます。

      このメソッドは、配列ベースのAPIとコレクションベースのAPIの間の橋渡し役として機能します。

      定義:
      toArray、インタフェースCollection<E>
      戻り値:
      このリスト内のすべての要素を適切な順序で含んでいる配列
      関連項目:
    • toArray

      <T> T[] toArray(T[] a)
      このリスト内のすべての要素を適切な順序で(最初の要素から最後の要素へ)含んでいる配列を返します。返される配列の実行時の型は、指定された配列の型になります。 指定された配列にリストが収まる場合は、その配列で返されます。 それ以外の場合は、指定された配列の実行時の型とこのリストのサイズを使って新しい配列が割り当てられます。

      指定された配列にリストが収まり、さらに余分な領域がある場合(配列にリストより多くの要素がある場合)、配列でリストの末尾に続く要素はnullに設定されます。 (このリストにnull要素がないことを呼出し側が知っている場合にのみ、この特性を利用してリストの長さを判断できます。)

      toArray()メソッドと同じように、このメソッドは、配列ベースのAPIとコレクションベースのAPIの間の橋渡し役として機能します。 さらに、このメソッドでは出力配列の実行時の型を正確に制御できるため、環境によっては割当ての手間を抑えるために使用できます。

      xが、文字列だけからなるリストであることがわかっていると仮定します。 次のコードを使うと、新しく割り当てられたStringの配列にリストをダンプできます。

      
           String[] y = x.toArray(new String[0]);
       
      toArray(new Object[0])は、機能の点でtoArray()と同一です。

      定義:
      toArray、インタフェースCollection<E>
      型パラメータ:
      T - コレクションを格納する配列のコンポーネント型
      パラメータ:
      a - 配列が十分な大きさを持つ場合は、このリストの要素の格納先の配列。配列のサイズが十分でない場合は、同じ実行時の型で新しい配列が格納用として割り当てられる。
      戻り値:
      このリストの要素が含まれている配列
      例外:
      ArrayStoreException - 指定された配列の実行時の型が、このリスト内のすべての要素の実行時の型のスーパー・タイプではない場合
      NullPointerException - 指定された配列がnullである場合
    • add

      boolean add(E e)
      指定された要素をこのリストの最後に追加します(オプションの操作)。

      このオペレーションをサポートするリストは、リストに追加できる要素に制限を加える場合があります。 たとえば、リストにはnull要素の追加を拒否するものもあれば、追加される要素の型について制限を加えるものもあります。 Listクラスは、追加できる要素について制約があれば、ドキュメントでそれを明確に記述するようにしてください。

      定義:
      add、インタフェースCollection<E>
      パラメータ:
      e - このリストに追加される要素
      戻り値:
      true (Collection.add(E)で指定されているとおり)
      例外:
      UnsupportedOperationException - addオペレーションがこのリストでサポートされない場合
      ClassCastException - 指定された要素のクラスが原因で、このリストにその要素を追加できない場合
      NullPointerException - 指定された要素がnullで、このリストがnull要素を許可しない場合
      IllegalArgumentException - この要素のあるプロパティが原因で、このリストにその要素を追加できない場合
    • remove

      boolean remove(Object o)
      指定された要素がこのリストにあれば、その最初のものをリストから削除します(オプションの操作)。 このリストにその要素がない場合は、変更されません。 より正式には、Objects.equals(o, get(i)) (そのような要素が存在する場合)のような最も低いインデックスiを持つ要素を削除します。 指定された要素がこのリストに含まれていた場合、つまり、呼出しの結果としてこのリストが変更された場合にtrueを返します。
      定義:
      remove、インタフェースCollection<E>
      パラメータ:
      o - このリストから削除される要素(その要素が存在する場合)
      戻り値:
      指定された要素がこのリストに含まれていた場合はtrue
      例外:
      ClassCastException - 指定された要素の型が、このリストと互換でない場合(オプション)
      NullPointerException - 指定された要素がnullで、このリストがnull要素を許可しない場合(オプション)
      UnsupportedOperationException - removeオペレーションがこのリストでサポートされない場合
    • containsAll

      boolean containsAll(Collection<?> c)
      指定されたコレクションのすべての要素がこのリストに含まれている場合にtrueを返します。
      定義:
      containsAll、インタフェースCollection<E>
      パラメータ:
      c - このリストにあるかどうかがチェックされるコレクション
      戻り値:
      指定されたコレクションのすべての要素がこのリストに含まれている場合はtrue
      例外:
      ClassCastException - 指定されたコレクションの1つ以上の要素の型が、このリストと互換でない場合(オプション)
      NullPointerException - 指定されたコレクションに1つ以上のnull要素が含まれており、このリストがnull要素を許可しない場合(オプション)、または指定されたコレクションがnullの場合
      関連項目:
    • addAll

      boolean addAll(Collection<? extends E> c)
      指定されたコレクション内のすべての要素を、指定されたコレクションのイテレータによって返される順序で、このリストの最後に追加します(オプションの操作)。 オペレーションの進行中に、指定されたコレクションが変更された場合の、このオペレーションの動作は定義されていません。 (これは、指定されたコレクションがこのリストで、しかも空ではない場合に起こります。)
      定義:
      addAll、インタフェースCollection<E>
      パラメータ:
      c - このリストに追加される要素を含むコレクション。
      戻り値:
      呼出しの結果としてこのリストが変更された場合はtrue
      例外:
      UnsupportedOperationException - addAllオペレーションがこのリストでサポートされない場合
      ClassCastException - 指定されたコレクションの要素のクラスが原因で、このリストにその要素を追加できない場合
      NullPointerException - 指定されたコレクションに1つ以上のnull要素が含まれており、このリストがnull要素を許可しない場合、または指定されたコレクションがnullの場合
      IllegalArgumentException - 指定されたコレクションの要素のあるプロパティが原因で、このリストにその要素を追加できない場合
      関連項目:
    • addAll

      boolean addAll(int index, Collection<? extends E> c)
      指定されたコレクション内のすべての要素を、このリストの指定された位置に挿入します(オプションの操作)。 その位置とそれ以降に要素がある場合は、それらを右に移動して、各要素のインデックスに1を加えます。 新しい要素は、指定されたコレクションのイテレータによって返される順序でこのリストに挿入されます。 オペレーションの進行中に、指定されたコレクションが変更された場合の、このオペレーションの動作は定義されていません。 (これは、指定されたコレクションがこのリストで、しかも空ではない場合に起こります。)
      パラメータ:
      index - 指定されたコレクションの最初の要素を挿入する位置のインデックス。
      c - このリストに追加される要素を含むコレクション。
      戻り値:
      呼出しの結果としてこのリストが変更された場合はtrue
      例外:
      UnsupportedOperationException - addAllオペレーションがこのリストでサポートされない場合
      ClassCastException - 指定されたコレクションの要素のクラスが原因で、このリストにその要素を追加できない場合
      NullPointerException - 指定されたコレクションに1つ以上のnull要素が含まれており、このリストがnull要素を許可しない場合、または指定されたコレクションがnullの場合
      IllegalArgumentException - 指定されたコレクションの要素のあるプロパティが原因で、このリストにその要素を追加できない場合
      IndexOutOfBoundsException - インデックスが範囲外の場合(index < 0||index> size())
    • removeAll

      boolean removeAll(Collection<?> c)
      このリストから、指定されたコレクションに含まれる要素をすべて削除します(オプションの操作)。
      定義:
      removeAll、インタフェースCollection<E>
      パラメータ:
      c - このリストから削除される要素を含むコレクション
      戻り値:
      呼出しの結果としてこのリストが変更された場合はtrue
      例外:
      UnsupportedOperationException - removeAllオペレーションがこのリストでサポートされない場合
      ClassCastException - このリストのある要素のクラスが、指定されたコレクションと互換でない場合(オプション)
      NullPointerException - このリストにnull要素が含まれており、指定されたコレクションがnull要素を許可しない場合(オプション)、または指定されたコレクションがnullの場合
      関連項目:
    • retainAll

      boolean retainAll(Collection<?> c)
      このリスト内で、指定されたコレクションに含まれている要素だけを保持します(オプションの操作)。 つまり、指定されたコレクションに含まれていないすべての要素をこのリストから削除します。
      定義:
      retainAll、インタフェースCollection<E>
      パラメータ:
      c - このリストで保持される要素を含むコレクション
      戻り値:
      呼出しの結果としてこのリストが変更された場合はtrue
      例外:
      UnsupportedOperationException - retainAllオペレーションがこのリストでサポートされない場合
      ClassCastException - このリストのある要素のクラスが、指定されたコレクションと互換でない場合(オプション)
      NullPointerException - このリストにnull要素が含まれており、指定されたコレクションがnull要素を許可しない場合(オプション)、または指定されたコレクションがnullの場合
      関連項目:
    • replaceAll

      default void replaceAll(UnaryOperator<E> operator)
      このリストの各要素を、その要素に演算子を適用した結果で置換します。 演算子によってスローされたエラーまたは実行時例外は、呼出し側に中継されます。
      実装要件:
      このリストでは、デフォルト実装は次と同等です。
      
           final ListIterator<E> li = list.listIterator();
           while (li.hasNext()) {
               li.set(operator.apply(li.next()));
           }
       
      このリストのリスト・イテレータがset操作をサポートしない場合、最初の要素を置き換えるときにUnsupportedOperationExceptionがスローされます。
      パラメータ:
      operator - 各要素に適用する演算子
      例外:
      UnsupportedOperationException - このリストが変更できない場合。 実装は、要素を置換できない場合、または一般的には変更がサポートされていない場合、この例外をスローすることがある。
      NullPointerException - 指定された演算子がnull、または演算子の結果がnull値でこのリストがnull要素を許可しない場合(オプション)
      導入されたバージョン:
      1.8
    • sort

      default void sort(Comparator<? super E> c)
      指定されたComparatorが示す順序に従って、このリストをソートします。 ソートはstableです: このメソッドは等しい要素を並べ替えてはいけません。

      このリストの要素はすべて、指定されたコンパレータを使用して相互に比較可能であることが必要です(つまり、リストの要素e1およびe2に対して、c.compare(e1, e2)からClassCastExceptionがスローされないようにする必要があります)。

      指定されたコンパレータがnullの場合は、リストの全要素でComparableインタフェースを実装し、要素の自然順序を使用する必要があります。

      このリストは変更可能でなければなりませんが、サイズ変更はできなくてもかまいません。

      実装要件:
      デフォルト実装は、このリストの全要素を含む配列の取得、配列のソート、このリストの反復処理を行うことにより、配列の対応する位置から各要素を再設定します。 (これは、リンクされたリストを適所にソートしようとした場合のn2 log(n)のパフォーマンスになるのを回避します。)
      実装上のノート:
      この実装は安定した適応型の反復マージ・ソートです。このソートでは、入力配列がランダムに順序付けられる場合は従来のマージ・ソートのパフォーマンスを提供しながら、入力配列が部分的にソートされている場合は必要となる比較回数がn lg(n)よりもかなり少なくなります。 入力配列がほとんどソートされている場合、この実装ではおよそn回の比較が必要になります。 一時ストレージの要件は、ほとんどソートされている入力配列用の小さな定数から、ランダムに順序付けられた入力配列用のn/2のオブジェクト参照までさまざまです。

      この実装では、その入力配列で昇順と降順を等しく利用するため、同じ入力配列のさまざまな部分で昇順と降順を利用できます。 それは、2つ以上のソートされた配列をマージするのに適切です。つまり、それらの配列を連結し、結果となる配列をソートするだけです。

      この実装は、Tim Peters氏によるPython用のリスト・ソート(TimSort)から応用されました。 それは、『Proceedings of the Fourth Annual ACM-SIAM Symposium on Discrete Algorithms』(1993年1月)の467-474ページに記載されている、Peter McIlroy氏の「Optimistic Sorting and Information Theoretic Complexity」からの技術を採用しています。

      パラメータ:
      c - リスト要素を比較するために使用されるComparator null値は、要素の自然順序付けが使用されることを示す
      例外:
      ClassCastException - リストに、指定されたコンパレータで相互比較できない要素が含まれる場合
      UnsupportedOperationException - リストのリスト・イテレータがset操作をサポートしない場合。
      IllegalArgumentException - (オプション)コンパレータがComparator規約に違反していることが見つかった場合
      導入されたバージョン:
      1.8
    • clear

      void clear()
      すべての要素をこのリストから削除します(オプションの操作)。 この呼出しが戻ると、このリストは空になります。
      定義:
      clear、インタフェースCollection<E>
      例外:
      UnsupportedOperationException - clearオペレーションがこのリストでサポートされない場合
    • equals

      boolean equals(Object o)
      指定されたオブジェクトがこのリストと等しいかどうかを比較します。 指定されたオブジェクトもリストであり、サイズが同じで、2つのリストの対応する要素がすべて等しい場合にだけtrueを返します。 (e1e2の2つの要素は、Objects.equals(e1, e2)の場合はequalです。) つまり2つのリストは、同じ要素が同じ順序で含まれている場合に等しいものとして定義されます。 この定義により、Listインタフェースの実装が異なっても、equalsメソッドが正しく動作することが保証されます。
      定義:
      equals、インタフェースCollection<E>
      オーバーライド:
      equals、クラスObject
      パラメータ:
      o - このリストと等しいかどうかを比較するオブジェクト
      戻り値:
      指定されたオブジェクトがこのリストと等しい場合はtrue
      関連項目:
    • hashCode

      int hashCode()
      このリストのハッシュ・コード値を返します。 リストのハッシュ・コードは、次の計算の結果として定義されます。
      
           int hashCode = 1;
           for (E e : list)
               hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
       
      これにより、Object.hashCode()の一般規約によって要求されるように、任意の2つのリストlist1list2list1.equals(list2)であれば、list1.hashCode()==list2.hashCode()となることが保証されます。
      定義:
      hashCode、インタフェースCollection<E>
      オーバーライド:
      hashCode、クラスObject
      戻り値:
      このリストのハッシュ・コード値
      関連項目:
    • get

      E get(int index)
      このリスト内の指定された位置にある要素を返します。
      パラメータ:
      index - 返される要素のインデックス
      戻り値:
      このリスト内の指定された位置にある要素
      例外:
      IndexOutOfBoundsException - インデックスが範囲外の場合(index < 0||index>= size())
    • set

      E set(int index, E element)
      このリスト内の指定された位置にある要素を、指定された要素に置き換えます(オプションの操作)。
      パラメータ:
      index - 置換される要素のインデックス。
      element - 指定された位置に格納される要素。
      戻り値:
      指定された位置に以前あった要素。
      例外:
      UnsupportedOperationException - setオペレーションがこのリストでサポートされない場合
      ClassCastException - 指定された要素のクラスが原因で、このリストにその要素を追加できない場合
      NullPointerException - 指定された要素がnullで、このリストがnull要素を許可しない場合
      IllegalArgumentException - 指定された要素のあるプロパティが原因で、このリストにその要素を追加できない場合
      IndexOutOfBoundsException - インデックスが範囲外の場合(index < 0||index>= size())
    • add

      void add(int index, E element)
      このリスト内の指定された位置に、指定された要素を挿入します(オプションの操作)。 その位置とそれ以降に要素があればそれらを右に移動させ、各要素のインデックスに1を加えます。
      パラメータ:
      index - 指定の要素が挿入される位置のインデックス
      element - 挿入される要素
      例外:
      UnsupportedOperationException - addオペレーションがこのリストでサポートされない場合
      ClassCastException - 指定された要素のクラスが原因で、このリストにその要素を追加できない場合
      NullPointerException - 指定された要素がnullで、このリストがnull要素を許可しない場合
      IllegalArgumentException - 指定された要素のあるプロパティが原因で、このリストにその要素を追加できない場合
      IndexOutOfBoundsException - インデックスが範囲外の場合(index < 0||index> size())
    • remove

      E remove(int index)
      このリスト内の指定された位置にある要素を削除します(オプションの操作)。 後続の要素を左に移動します(インデックスから1を減算)。 リストから削除された要素が返されます。
      パラメータ:
      index - 削除される要素のインデックス
      戻り値:
      指定された位置に以前あった要素。
      例外:
      UnsupportedOperationException - removeオペレーションがこのリストでサポートされない場合
      IndexOutOfBoundsException - インデックスが範囲外の場合(index < 0||index>= size())
    • indexOf

      int indexOf(Object o)
      指定された要素がこのリスト内で最初に検出された位置のインデックスを返します。指定された要素がこのリストにない場合は -1を返します。 より正式には、Objects.equals(o, get(i))のような最も低いインデックスi、またはそのようなインデックスがない場合は -1を返します。
      パラメータ:
      o - 検索する要素
      戻り値:
      指定された要素がこのリスト内で最初に検出された位置のインデックス。その要素がこのリストにない場合は -1
      例外:
      ClassCastException - 指定された要素の型が、このリストと互換でない場合(オプション)
      NullPointerException - 指定された要素がnullで、このリストがnull要素を許可しない場合(オプション)
    • lastIndexOf

      int lastIndexOf(Object o)
      指定された要素がこのリスト内で最後に検出された位置のインデックスを返します。指定された要素がこのリストにない場合は -1を返します。 より正式には、Objects.equals(o, get(i))のような最高のインデックスi、またはそのようなインデックスがない場合は -1を返します。
      パラメータ:
      o - 検索する要素
      戻り値:
      指定された要素がこのリスト内で最後に検出された位置のインデックス。その要素がこのリストにない場合は -1
      例外:
      ClassCastException - 指定された要素の型が、このリストと互換でない場合(オプション)
      NullPointerException - 指定された要素がnullで、このリストがnull要素を許可しない場合(オプション)
    • listIterator

      ListIterator<E> listIterator()
      このリスト内の要素を(適切な順序で)反復するリスト・イテレータを返します。
      戻り値:
      このリスト内の要素を(適切な順序で)反復するリスト・イテレータ
    • listIterator

      ListIterator<E> listIterator(int index)
      リスト内の指定された位置で始まる、リスト内の要素を(適切な順序で)反復するリスト・イテレータを返します。 指定されたインデックスは、nextの最初の呼出しによって返される最初の要素を示します。 previousの最初の呼出しは、指定されたインデックスから1を引いたインデックスを持つ要素を返します。
      パラメータ:
      index - リスト・イテレータから(next呼出しによって)返される最初の要素のインデックス
      戻り値:
      リスト内の指定された位置で始まる、リスト内の要素を(適切な順序で)反復するリスト・イテレータ
      例外:
      IndexOutOfBoundsException - インデックスが範囲外の場合(index < 0||index> size())
    • subList

      List<E> subList(int fromIndex, int toIndex)
      このリストの、指定されたfromIndex (これを含む)からtoIndex (これを含まない)までの部分のビューを返します。 fromIndextoIndexが等しい場合は、空のリストが返されます。 返されるリストはこのリストに連動しているため、返されるリスト内での非構造的な変更はこのリストに反映され、このリスト内での変更は返されるリストに反映されます。 返されるリストは、このリストによってサポートされている、任意のリスト・オペレーションをすべてサポートします。

      このメソッドでは、配列に一般的に見られるような、明示的な範囲操作は必要ありません。 リストを予期する操作は、リスト全体ではなくsubListビューを渡すことで範囲操作として使用できます。 たとえば、次のイディオムは、ある範囲の要素をリストから削除します。

      
            list.subList(from, to).clear();
       
      indexOfおよびlastIndexOfでも同様のイディオムを構築して、CollectionsクラスのすべてのアルゴリズムをsubListに適用できます。

      バッキング・リスト(すなわち、このリスト)の構造が、返されたリストを経由せずに変更された場合、このメソッドで返されるリストのセマンティックスは定義されていません。 (構造の変更とは、リストのサイズが変わるような変更や、進行中のイテレーションが不正な結果に終わるような変更のことです。)

      パラメータ:
      fromIndex - subListの下端点(これを含む)
      toIndex - subListの上端点(これを含まない)
      戻り値:
      このリスト内の指定された範囲のビュー
      例外:
      IndexOutOfBoundsException - 端点のインデックス値が不正である場合(fromIndex < 0||toIndex> size||fromIndex> toIndex)
    • spliterator

      default Spliterator<E> spliterator()
      このリスト内の要素に対するSpliteratorを作成します。

      Spliteratorは、Spliterator.SIZEDおよびSpliterator.ORDEREDを報告します。 実装は、追加の特性値の報告をドキュメント化する必要があります。

      定義:
      spliterator、インタフェースCollection<E>
      定義:
      spliterator、インタフェースIterable<E>
      実装要件:
      デフォルト実装では、次のようにlate-bindingスプライテータが作成されます:
      • リストがRandomAccessのインスタンスである場合、デフォルトの実装では、メソッドget(int)を呼び出すことによって要素を走査するスプライテータが作成されます。 そのような呼び出しが結果となるか、またはIndexOutOfBoundsExceptionとなる場合、スプライテータはfail-fastになり、ConcurrentModificationExceptionをスローします。 リストがAbstractListのインスタンスでもある場合、spliteratorはリストmodCountフィールドを使用して追加のfail-fast動作を提供します。
      • それ以外の場合、デフォルトの実装では、リストIteratorからスプライテータが作成されます。 spliteratorはリスト・イテレータのfail-fastを継承します。
      実装上のノート:
      作成されたSpliteratorはさらにSpliterator.SUBSIZEDも報告します。
      戻り値:
      このリスト内の要素に対するSpliterator
      導入されたバージョン:
      1.8
    • of

      static <E> List<E> of()
      ゼロ要素を含む変更不可能なリストを返します。 詳細については、「変更不可能なリスト」を参照してください。
      型パラメータ:
      E - List要素型
      戻り値:
      空のList
      導入されたバージョン:
      9
    • of

      static <E> List<E> of(E e1)
      1つの要素を含む変更不可能なリストを返します。 詳細については、「変更不可能なリスト」を参照してください。
      型パラメータ:
      E - List要素型
      パラメータ:
      e1 - 単一要素
      戻り値:
      指定された要素を含むList
      例外:
      NullPointerException - 要素がnullの場合
      導入されたバージョン:
      9
    • of

      static <E> List<E> of(E e1, E e2)
      2つの要素を含む変更不可能なリストを返します。 詳細については、「変更不可能なリスト」を参照してください。
      型パラメータ:
      E - List要素型
      パラメータ:
      e1 - 最初の要素
      e2 - 第2要素
      戻り値:
      指定された要素を含むList
      例外:
      NullPointerException - 要素がnullの場合
      導入されたバージョン:
      9
    • of

      static <E> List<E> of(E e1, E e2, E e3)
      3つの要素を含む変更不可能なリストを返します。 詳細については、「変更不可能なリスト」を参照してください。
      型パラメータ:
      E - List要素型
      パラメータ:
      e1 - 最初の要素
      e2 - 第2要素
      e3 - 第3要素
      戻り値:
      指定された要素を含むList
      例外:
      NullPointerException - 要素がnullの場合
      導入されたバージョン:
      9
    • of

      static <E> List<E> of(E e1, E e2, E e3, E e4)
      4つの要素を含む変更不可能なリストを返します。 詳細については、「変更不可能なリスト」を参照してください。
      型パラメータ:
      E - List要素型
      パラメータ:
      e1 - 最初の要素
      e2 - 第2要素
      e3 - 第3要素
      e4 - 第4要素
      戻り値:
      指定された要素を含むList
      例外:
      NullPointerException - 要素がnullの場合
      導入されたバージョン:
      9
    • of

      static <E> List<E> of(E e1, E e2, E e3, E e4, E e5)
      5つの要素を含む変更不可能なリストを返します。 詳細については、「変更不可能なリスト」を参照してください。
      型パラメータ:
      E - List要素型
      パラメータ:
      e1 - 最初の要素
      e2 - 第2要素
      e3 - 第3要素
      e4 - 第4要素
      e5 - 第5要素
      戻り値:
      指定された要素を含むList
      例外:
      NullPointerException - 要素がnullの場合
      導入されたバージョン:
      9
    • of

      static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6)
      6つの要素を含む変更不可能なリストを返します。 詳細については、「変更不可能なリスト」を参照してください。
      型パラメータ:
      E - List要素型
      パラメータ:
      e1 - 最初の要素
      e2 - 第2要素
      e3 - 第3要素
      e4 - 第4要素
      e5 - 第5要素
      e6 - 第6要素
      戻り値:
      指定された要素を含むList
      例外:
      NullPointerException - 要素がnullの場合
      導入されたバージョン:
      9
    • of

      static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7)
      7つの要素を含む変更不可能なリストを返します。 詳細については、「変更不可能なリスト」を参照してください。
      型パラメータ:
      E - List要素型
      パラメータ:
      e1 - 最初の要素
      e2 - 第2要素
      e3 - 第3要素
      e4 - 第4要素
      e5 - 第5要素
      e6 - 第6要素
      e7 - 第7要素
      戻り値:
      指定された要素を含むList
      例外:
      NullPointerException - 要素がnullの場合
      導入されたバージョン:
      9
    • of

      static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8)
      8つの要素を含む変更不可能なリストを返します。 詳細については、「変更不可能なリスト」を参照してください。
      型パラメータ:
      E - List要素型
      パラメータ:
      e1 - 最初の要素
      e2 - 第2要素
      e3 - 第3要素
      e4 - 第4要素
      e5 - 第5要素
      e6 - 第6要素
      e7 - 第7要素
      e8 - 第8要素
      戻り値:
      指定された要素を含むList
      例外:
      NullPointerException - 要素がnullの場合
      導入されたバージョン:
      9
    • of

      static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9)
      9つの要素を含む変更不可能なリストを返します。 詳細については、「変更不可能なリスト」を参照してください。
      型パラメータ:
      E - List要素型
      パラメータ:
      e1 - 最初の要素
      e2 - 第2要素
      e3 - 第3要素
      e4 - 第4要素
      e5 - 第5要素
      e6 - 第6要素
      e7 - 第7要素
      e8 - 第8要素
      e9 - 第9要素
      戻り値:
      指定された要素を含むList
      例外:
      NullPointerException - 要素がnullの場合
      導入されたバージョン:
      9
    • of

      static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9, E e10)
      10個の要素を含む変更不可能なリストを返します。 詳細については、「変更不可能なリスト」を参照してください。
      型パラメータ:
      E - List要素型
      パラメータ:
      e1 - 最初の要素
      e2 - 第2要素
      e3 - 第3要素
      e4 - 第4要素
      e5 - 第5要素
      e6 - 第6要素
      e7 - 第7要素
      e8 - 第8要素
      e9 - 第9要素
      e10 - 10番目の要素
      戻り値:
      指定された要素を含むList
      例外:
      NullPointerException - 要素がnullの場合
      導入されたバージョン:
      9
    • of

      @SafeVarargs static <E> List<E> of(E... elements)
      任意の数の要素を含む変更不可能なリストを返します。 詳細については、「変更不可能なリスト」を参照してください。
      APIのノート:
      このメソッドは、引数として単一の配列も受け入れます。 結果のリストの要素型は配列のコンポーネント型になり、リストのサイズは配列の長さに等しくなります。 アレイである単一要素のリストを作成するには、次のようにします:
      
           String[] array = ... ;
           List<String[]> list = List.<String[]>of(array);
       
      これにより、代わりにList.of(E)メソッドが呼び出されます。
      型パラメータ:
      E - List要素型
      パラメータ:
      elements - リストに含まれる要素
      戻り値:
      指定された要素を含むList
      例外:
      NullPointerException - 要素がnullの場合、または配列がnullの場合
      導入されたバージョン:
      9
    • copyOf

      static <E> List<E> copyOf(Collection<? extends E> coll)
      指定されたCollectionの要素をその反復順序で含む「変更不可能なリスト」を返します。 指定されたCollectionはnullであってはならず、null要素を含んではいけません。 指定されたCollectionがその後に変更された場合、返されたListはそのような変更を反映しません。
      実装上のノート:
      指定されたCollectionが「変更不可能なリスト」の場合、copyOfの呼び出しは一般にコピーを作成しません。
      型パラメータ:
      E - List要素型
      パラメータ:
      coll - 要素が描画されるCollectionはnullでなくてはなりません
      戻り値:
      与えられたCollectionの要素を含むList
      例外:
      NullPointerException - collがnullの場合、またはnullが含まれている場合
      導入されたバージョン:
      10