Sie sind auf Seite 1von 17

Array-Based List

Collection

Ma. de los Angeles Junco Rey

Listas
Una lista es una secuencia que almacena elementos por
posicin. Si existen n elementos en la coleccin, el primero
se encuentra en la posicin 0 y el ltimo en la posicin n-1.

La interface List describe una categora de colecciones


basadas en posiciones. List extiende de la interface
Collection.

Ma. de los Angeles Junco Rey

Ma. de los Angeles Junco Rey

Interface List

Ma. de los Angeles Junco Rey

Colecciones en Java

Ma. de los Angeles Junco Rey

Clase ArrayList
Un ArrayList es una estructura genrica que almacena
elementos en bloques contiguos de memoria. El final de la lista
proporciona la capacidad de expanderse en caso de que se
necesite ms espacio para almacenar los elementos deseados.

Ma. de los Angeles Junco Rey

Tamao de ArrayList
La capacidad de un ArrayList es el total de elementos en el bloque de
memoria en el que se encuentra la lista. El tamao es el total de
elementos que actualmente se encuentran el la lista.

El mtodo ensureCapacity(minCapacity) asegura que el bloque de


almacenamiento tiene, al menos, una minCapacity disponible para
almacenar elementos.

El mtodo trimToSize() reduce la capacidad la lista a su tamao (size)


actual.

Unin de dos ArrayLists

public static <T> void join (ArrayList<T> listA,


ArrayList<T> listB) {
int i, sizeA = listA.size(), sizeB = listB.size();
listA.ensureCapacity(sizeA + sizeB);

for (i = 0; i < sizeB; i++)


listA.add(listB.get(i));
}

Ma. de los Angeles Junco Rey

Implementando un ArrayList
Un objeto ArrayList utiliza un arreglo de un tipo especfico para
almacenar sus elementos.

Ma. de los Angeles Junco Rey

Implementando un ArrayList
(variables y constructor)
public class ArrayList<T> implements List<T> {
private T[] listArr;
private int listSize;

public ArrayList()
{
listArr = (T[])new Object[10];
listSize = 0;
}
. . .
}

Ma. de los Angeles Junco Rey

ensureCapacity()

public void ensureCapacity (int minCapacity) {


int currentCapacity = listArr.length;
if (minCapacity > currentCapacity) {
T[] oldListArr = listArr;
listArr = (T[]) new Object[minCapacity];
for (int i=0; i < listSize; i++)
listArr[i] = oldListArr[i];
oldListArr = null;
}
}

add(int index, T item)


public void add (int index, T item) {

if (index >= 0 && index < this.listSize) {


if (this.listSize == this.listArr.length)
this.ensureCapacity(2 * this.listArr.length);
for (int j = this.listSize-1; j >= index; j--)
this.listArr[ j+1 ] = this.listArr[ j ];
this.listArr[index] = item;
this.listSize++;
}

}
public boolean add (Object item){
add(listSize, item);
return true;
}
Ma. de los Angeles Junco Rey

remove(int index)
public T remove (int index) {
if (index >= 0 && index < this.listSize) {
T returnElement = this.listArr[index];
for (int j = index; j < this.listSize-1; j++)
this.listArr[ j ] = this.listArr[ j+1 ];
this.listArr[this.listSize-1] = null;
listSize--;
return returnElement;
}
return null;

Ma. de los Angeles Junco Rey

remove(Object item)
public boolean remove (Object item) {
int i = 0;

boolean retValue = true;


if ((i = indexOf (item)) != -1)
remove(i);
else
retValue = false;
return retValue;
}
Ma. de los Angeles Junco Rey

get(int index)

public T get (int index) {


if (index >= 0 && index < this.listSize)
return this.listArr[index];
return null;
}

Ma. de los Angeles Junco Rey

set(int index, T item)


public T set (int index, T item)
{
if (index >= 0 && index < this.listSize) {
T previousValue = this.listArr[index];
this.listArr[index] = item;
return previousValue;
}
return null;
}

Ma. de los Angeles Junco Rey

Ejemplos ArrayList
ComparaArrayListYArreglo.java

Ma. de los Angeles Junco Rey