viernes, 3 de enero de 2014

Listas

La interface List define métodos para operar con colecciones ordenadas y que pueden tener elementos repetidos. Por ello, dicha interface declara métodos adicionales que tienen que ver con el orden y con el acceso a elementos o rangos de elementos. Además de los métodos de Collection. la interface List declara los métodos siguientes:
Compiled from List.java
public interface java.útil.List extends java.útil.Collection
{
public abstract void add(int, java.lang.Object);
public abstract boolean addAll(intf java.útil.Collection);
public abstract java.lang.Object get(int);
public abstract int indexOf(java.lang.Object);
public abstract int lastlndexOf(java.lang.Object);
public abstract java.útil.Listlterator listlterator();
public abstract java.útil.Listlterator listlterator(int);
public abstract java.lang.Object remove(int);
public abstract java.lang.Object set(int, java.lang.Object);
public abstract java.útil.List subList(int, int);
}

Los nuevos métodos add() y addAHQ tienen un argumento adicional para insertar elementos en una posición determinada, desplazando el elemento que estaba en esa posición y los siguientes. Los métodos get() y set() penniten obtener y cambiar el elemento en una posición dada. Los métodos indexOfO y lastlndexOfO penniten saber la posición de la primera o la última vez que un elemento aparece en la lista; si el elemento no se encuentra se devuelve -1. 
El método subList(int fromlndex, tolndex) devuelve una "vista" de la lista, desde el elemento fromlndex inclusive hasta el tolndex exclusive. Un cambio en esta "vista"' se refleja en la lista original, aunque no conviene hacer cambios simultáneamente en ambas. Lo mejor es eliminar la "vista" cuando ya no se necesita. 
Existen dos implementaciones de la interface List, que son las clases ArrayList y LinkedList. La diferencia está en que la primera almacena los elementos de la colección en un array de Objects. mientras que la segunda los almacena en una lista vinculada. 
Los arrays proporcionan una fonna de acceder a los elementos mucho más eficiente que las listas vinculadas. Sin embargo tienen dificultades para crecer (hay que reservar memoria nueva, copiar los elementos del array antiguo y liberar la memoria) y para insertar y/o bonar elementos (hay que desplazar en un sentido u en otro los elementos que están detrás del elemento borrado o insertado). Las listas vinculadas sólo penniten acceso secuencial. pero tienen una gran flexibilidad para crecer, para bonar y para insertar elementos. El optar por una implementación u otra depende del caso concreto de que se trate.

No hay comentarios:

Publicar un comentario