JAvaで配列をArrayListに変換するいくつかのシナリオ!!


配列があるとします.
Element[] array = {new Element(1),new Element(2),new Element(3)};

list<>arraylist=??に変換するにはどうすればいいですか?
シナリオ1:
new ArrayList<Element>(Arrays.asList(array))`

まず、ArrayListの構築方法のドキュメントを見てみましょう.ArrayList(Collectionc):特定のコンテナを含む要素のリストを作成し、コンテナ反復器の順序に従って返します.構造方法は次のとおりです.容器cを配列2に変換する.ArrayListの「elementData」と呼ばれる配列に配列をコピーするArrayListの構造方法のソースコードは、以下の通りである.
public ArrayList(Collection extends E> c) {
       elementData = c.toArray();
       size = elementData.length;

       if (elementData.getClass() != Object[].class)
             elementData = Arrays.copyOf(elementData, size, Object[].class);
}

シナリオ2:
Arrays.asList(array)  Arrays.asList(new Element(1),new Element(2),new Element(3))

しかし、このようにするにはいくつかの穴に注意しなければなりません.
このようにして生成されたlistは,一定長である.つまり、addやremoveをすると、U n s p p p o r t e d OperationExceptionが投げ出されます.1、配列の値を変更するとリストの対応値も変わります!2、Arrays.asList()はJavaではなくArrays内部の静的クラスを返す.util.ArrayListのクラス.これutil.Arrays.ArrayListにはset(),get(),contains()メソッドがありますがadd()メソッドはありませんので固定サイズです
シナリオ3(最良)
Collections.addAll(arraylist, array);