Javaの - リスト・コレクション・フレームワークと選択のセットの深い理解

リスト

リスト実装するコレクションは、ので、彼はコレクションのすべてのメソッドを持っています

ストレージのリストは以下のよう
ここに画像を挿入説明

以下のコードを使用します

//使用List的接口
List<String> list = new ArrayList<>();//创建ArrayList的实现类
//List<String> list = new LinkedList<>();//创建LinkedList的实现类

//添加元素
list.add("元素1");
list.add("元素2");
list.add("元素3");
list.add("元素4");
list.add("元素5");

//打印输出集合以及下标为2的元素
System.out.println(list);
System.out.println("下标为2:"+ list.get(2));

//删除下标为2的元素
list.remove(2);

//打印输出集合以及下标为2的元素
System.out.println(list);
System.out.println("下标为2:"+ list.get(2)); 复制代码

出力

[元素1, 元素2, 元素3, 元素4, 元素5]
下标为2:元素3
[元素1, 元素2, 元素4, 元素5]
下标为2:元素4 复制代码

リストを使用するとき

  • 要素のセットを保存します
  • これらの要素を繰り返すことができます

リストを選択する方法

一般的に使用される2があります。

配列リスト

¨è¿å??æ??é???? ???? ??å¥å??æ????????¾çè¿°

  • 内部には、配列を維持します
  • 配列の要素の増減のすべての要素は、再作成する必要があります
  • 増やす削除、大きなオーバーヘッドを
  • クエリ変更速度を

LinkedListの

¨è¿å??æ??é???? ???? ??å¥å??æ????????¾çè¿°

  • LinkedListのは、二重にリンクされたリストです、
  • 追加および削除する ArrayListの要素よりも優れた性能を有します。
  • しかし、の要素のクエリ変更のArrayListよりも弱いという点を。

ソースコードを解析一覧

追加の収集方法、リストのいくつかの具体的な方法があります

我々は唯一のライン上のインターフェースを使用する必要があるコレクションを、使用している場合は一般的に、使用する必要はそれがクラスの動作を実装するオブジェクトなかっ
方法の説明のみが、本明細書に一覧を記載して

void replaceAll(UnaryOperator operator)复制代码

このリストの各要素は、計算結果の後に要素を交換します。操作や実行時例外に起因するエラーが呼び出し側にスローされます。

パラメータ:
オペレータ-の各要素に適用される
例外:
UnsupportedOperationExceptionが-このリストが変更可能ではない場合。一般的に、変更することができない場合、要素は、交換またはできない場合に実装が発生してもよいです

NullPointerExceptionが-オペレータによって指定された場合は、空であるか、演算子の結果はヌル値であれば、このリストがnull要素と許可しない
内部コード:

default void replaceAll(UnaryOperator<E> operator) {
Objects.requireNonNull(operator);
    final ListIterator<E> li = this.listIterator();
    while (li.hasNext()) {
        li.set(operator.apply(li.next()));
    }
} 复制代码

void sort(Comparator c)复制代码

順次所定の順序付きリストコンパレータに従って生成されました。ソート安定である:この方法は、同じ要素を並べ替えることはできません。

このリスト内のすべての要素が指定されている比較(すなわち、(E1、E2)互いにc.compareと比較されているすべての要素がリストにE1とE2 ClassCastExceptionがスローすべきではありません)を使用する必要があります。

指定された比較がnullの場合、このリスト内のすべての要素はComparableインタフェースを実装する必要がありますし、要素の自然順序を使用する必要があります。
このリストは変更可能でなければなりませんが、サイズ変更可能である必要はありません。

パラメータ:
C -リストの要素を比較するコンパレータを受けます。ヌル値が使用されるべき要素の自然順序が表す
例外:
ClassCastExceptionが-リストに指定されたコンパレータが含まれている場合、それぞれ他の要素と比較することができないにUnsupportedOperationException -リストが反復子が設定された動作、IllegalArgumentExceptionをサポートしていないリストがある場合-比較違反コンパレータが検出された場合ルール

内部コード:

default void sort(Comparator<? super E> c) {
    Object[] a = this.toArray();
    Arrays.sort(a, (Comparator) c);
    ListIterator<E> i = this.listIterator();
    for (Object e : a) {
        i.next();
        i.set((E) e);
    }
} 复制代码

E get(int index)复制代码

インデックスは0〜Integer.MAX_VALUEの間の数であります

このリスト内の指定された位置にある要素を返します。

パラメータ:
要素のインデックスインデックス
戻り値:
このリスト内の要素の指定された位置

例外:

例外:IndexOutOfBoundsException - インデックスが範囲外の場合(インデックス<0 ||インデックス> =サイズ())

E set(int index, E element)复制代码

リストで指定されたターゲット要素を交換してください

パラメータ:
index -置換される要素のインデックス
要素が指定した場所の中に保存されている-要素
戻り値:
指定された位置の前に要素が
例外:
例外:UnsupportedOperationException - setオペレーションがこのリストでサポートされていない場合
ClassCastException -指定された要素のクラスが、それを防ぐために、場合にリストに追加された
場合NullPointerException -指定された要素がnullで、このリストがnull要素許可しない場合
、IllegalArgumentExceptionを-それは、特定のプロパティが指定された要素がこのリストに追加されているできない場合
はIndexOutOfBoundsException -インデックスが範囲外の場合(インデックス< 0 ||インデックス> =サイズ() )

void add(int index, E element)复制代码

インサート要素で指定されたターゲット位置、及び統一指標を移動元の要素後方
パラメータ:
インデックス-インデックスは要素指定に挿入される
要素が挿入される-要素
:例外
UnsupportedOperationExceptionが-追加操作がない場合このリストには、サポート
リストに追加されてから指定された要素の防止のクラスそれならば- ClassCastExceptionが
NullPointerException -指定された要素がnullで、このリストがnull要素許可しない場合
、指定された要素の防止、そのプロパティの一部が追加されている場合- 、IllegalArgumentExceptionをこのリスト
はIndexOutOfBoundsException -インデックスが範囲外の場合(インデックス<0 ||インデックス>サイズ ())

E remove(int index)复制代码

インデックスは0〜Integer.MAX_VALUEの間の数である
要素の位置を指定するには、このリストを削除します。後部要素は、左に移動されます。削除されるの要素を返します。
パラメータ:
インデックス-インデックス
戻り値:
除去要素は
例外:
UnsupportedOperationExceptionが- removeオペレーションがこのリストでサポートされていない場合
はIndexOutOfBoundsException -インデックスが範囲外の場合(インデックス<0 ||インデックス> = サイズ())

int indexOf(Object o)复制代码


リスト内の要素を見ているOは、要素がインデックスリストの最初の時間を返します
が見つからない-1
パラメータ:
O -の要素を検索する
戻り値:
最初のインデックスのリストに登場し、指定された要素を、見つけることができません-1へ

int lastIndexOf(Object o)复制代码

最初に出現したこのリスト内のインデックスの最後の要素を返し、または-1このリストは要素が含まれていない場合。より正式に、このObjects.equals(O、(i)は取得)、または-1なしような指標であれば同様に戻り、私は。

機能:
O -検索する要素
戻り値:
指定された要素、インデックスのこのリストの最後に出現する、または-1の要素が含まれていません。このリストは、次の場合に
例外:
ClassCastExceptionが-指定された要素の型が、このと互換性がない場合リスト
NullPointerException -指定された要素がnullで、このリストがnull要素を許可しない場合

ListIterator listIterator()复制代码

リスト反復子を返します。

戻り値:
リスト反復子を返します。

ListIterator listIterator(int index)复制代码

戻り値は、リスト反復子が指定されたインデックスから始まります

パラメータ:
index-イテレータの最初の要素のインデックス
戻り値:
返すイテレータスタートリストから指定されたインデックス
例外:
例外:IndexOutOfBoundsException -インデックスが範囲外の場合(インデックス<0 ||インデックス>サイズ ())

List subList(int fromIndex, int toIndex)复制代码

傍受一覧

List<Object> subList = list.subList(0, 5);
//其中subList(0, 5)取得的是下标为0到4的元素,不包含下标为5的元素. 复制代码

パラメータ:
たfromIndex -開始
点、終了-たtoIndexを
:戻り
、リストビュー内の指定された範囲は
例外:
IndexOutOfBoundsException -指定のインデックス値が無効エンドポイントである(たfromIndex <0 || toIndexの>サイズ ||たfromIndex> toIndexの)

static  List of(E e1)复制代码

戻り値1つの要素を含むリストを変更することはできません。詳細情報は、リストを変更することはできませんを参照してください。

パラメータ:
E1 -単一のメンバーが、そこに複数であってもよいし、空の書き込み返されないことがあります
タイプのパラメータを:
<E> -要素の型のリスト
戻り値:
リストは、指定した要素が含まれている
:例外
-要素がnullの場合、NullPointerExceptionが

static  List copyOf(Collection coll)复制代码

コレクションは、順番イテレータのセットコピー
:パラメータ
コレクションセット-コルを
:typeパラメータを
<E> -要素の型のリスト
戻り値:
リストのコレクションであって、与えられた要素
例外:
NullPointerExceptionが- nullの場合、またはそれはどんな空白が含まれている場合

推奨読書:

[シリーズ]尋ねる方法などのカフカのスプリングストローク、BATメーカーの準備?

[シリーズ]は、スプリングストロークの魂尋ねるZooKeeperの28の準備を、どのように面接を取得する方法を教えて!

[シリーズ]春のストロークがZhenti最新のLinux 45のインタビューのための準備

[シリーズ] MySQLのインタビューZhentiにばねリクルート高周波数コムの準備年間

[シリーズ] springBootは魂22が尋ねる春のストロークの準備を!

Zhenti詳細な[ストロークのバネ一連の準備] 50マイクロサービスインタビュー

詳細27 MyBatisのインタビューZhenti [ストロークのバネ一連の準備]

Resdis 40メーカーはどのように面接を取得する方法を教え、魂を尋ね

Javaプログラマが収集する:より多くの技術的な記事やインタビューZhentiは、マイクロチャネル公共数に焦点を当てることができます。




おすすめ

転載: juejin.im/post/5e469475f265da574064166a