AVA-集合フレームワーク(2)


ArrayList


ArrayListはListインタフェースを実現しているため、データの格納順序を維持し、重複を許容するという特徴がある.
アレイにより多くのストレージ容量がない場合は、より大きな新しいアレイを作成し、既存のアレイに格納されている内容を新しいアレイにコピーして保存します.
ArrayListを作成する場合は、保存する要素の数を考慮して、実際に保存する要素の数よりやや大きく設定することが望ましい.作成時に、格納されたオブジェクトが指定したサイズを超えると、自動的にオブジェクトのサイズが増加しますが、処理時間がかかります.
データの読み取りと格納は効率的ですが、容量を変更する必要がある場合は、新しいアレイを作成し、既存のアレイから新しく作成したアレイにデータをコピーする必要があるため、効率はかなり低くなります.
したがって、格納するデータの数を考慮してから、十分なインスタンスを生成することが望ましい.
removeメソッドの例)
	public Object remove(int index){
    	Object oldObj = null;
        
        if(index < 0 \\ index >= size)
        	throw new IndexOutOfBoundsException("범위를 벗어났습니다.");
        oldObj = data [index];
        
        if(index != size-1){
        	System.arraycopy(data, index+1, data, index, size-index-1);
        }
        data[size-1] = null;
        size--;
        
        return oldObj;
    }
Object Remove(int index)メソッドは、指定した位置(index)のオブジェクトを削除し、削除したオブジェクトを返すように記述されます.削除するオブジェクトの真下のデータを1つずつ上にコピーし、削除するオブジェクトを上書きするように処理します.削除するオブジェクトが最後のデータである場合は、コピーせずにnullに変更します.

プロセス


  • 削除するインデックスデータの後のインデックスデータを1つずつ上にコピーし、削除するデータを上書きします.
    System.arrycopy(data,3, data, 2, 2)
    2つのデータを//data[3]からdata[2]にコピーします.

  • データはすべて1つのグリッドを上に移動し、最後のデータはnullに変更する必要があります.
    data[size-1] = null;

  • データが削除されるため、データの数が減少するため、sizeの値は1減少する.
    size--;