Java Collections Framework
Interface List
Arraylist
LinkedList
Interface Set
Hashset
Interface
Treeset
Arraylist – Listas Indexadas
Es la implementación de un arreglo redimensionable de la interface List. Implementa operaciones de listado. Permite valores null. También provee métodos para manipular el tamaño del arreglo que se utiliza internamente para guardar la lista.
Cada instancia del ArrayList tiene una capacidad. La capacidad es el tamaño del arreglo utilizado para guardar los elementos en la lista. Es al menos del tamaño del tamaño de la lista. Conforme se agregan elemento al ArrayList, su capacidad crece automáticamente.
Antes de utilizar la clase ArrayList es necesario realizar el importe respectivo:
import java.util.ArrayList;
Para crear un nuevo ArrayList utilizamos el siguiente código:
ArrayList lista = new ArrayList();
Si se desea recorrer el contenido del ArrayList, utilizamos un iterador:
Iterator i_lista = lista.iterator();
//Mientras que el iterador tenga un proximo elemento
while( i_lista.hasNext() ) {
System.out.println(iter.next());
}
Recordar que se debe realizar el importe del Iterator para que pueda ser utilizado:
import java.util.Iterator;
LinkedList – Listas Enlazadas
LinkedList, al igual que ArrayList es una implementación de la interface List. Implementa operaciones de listado. Además de implementar la interface List, esta clase provee métodos para obtener (get), remover (remove) e insertar (insert) elementos al principio y fin de la lista. Estas operaciones permiten a las listas enlazadas ser utilizadas como una pila (stack), o colas doblemente enlazadas.
Es importante mencionar que una lista enlazada es una estructura posicional, es decir, que importa donde estas situado en cada momento. Al método add de la lista añade el elemento al final de la lista, para colocarlo en una posición determinada debes usar un Iterator.
Utilizamos el siguiente importe para utilizar la clase LinkedList:
import java.util.LinkedList;
Para declarar un objeto de tipo LinkedList lo hacemos de la siguiente manera:
LinkedList nombre = new LinkedList ();
Para agregar un elemento a la LinkedList lo hacemos de la siguiente manera:
nombre.add(elemento);
Por ejemplo:
Lista.add(“Elemento 1”);
Si deseamos recorrer el contenido de la LinkedList, lo hacemos a través de un iterador. Siempre recordar que se debe incluir el importe:
import java.util.Iterator;
y con el siguiente código recorremos los elementos:
Iterator i_linkedlist = linked_list.iterator();
//Mientras que el iterador tenga un proximo elemento
while( i_linkedlist.hasNext() ) {
System.out.println(i_linkedlist.next());
}
HashSet – Conjuntos Indexados
Esta clase implementa la interface Set, en conjunto con una table hash(actualmente es una instancia a HashMap). Este tipo de clase no garantiza que los elementos van a permanecer ordenados durante su uso. Esta clase permite elementos null.
Esta clase ofrece un funcionamiento constante para las operaciones básicas (add, remove, contains y size).
Es importante mencionar que esta implementación no se encuentra sincronizada. Esto quiere decir que si múltiples hilos acceden a colocar elemento concurrentemente, y al menos uno de esos elementos modifica el Set, debe ser sincronizado externamente.
En el siguiente ejemplo se mostrará como manipular elementos utilizando un HashSet. Estos conjuntos de datos tienen la propiedad de que no se pueden guardar dos elementos con el mismo valor.
El importe para la clase HashSet es el siguiente:
import java.util.HashSet;
Primero creamos nuestro objeto de tipo HashSet:
Set hs = new HashSet();
Luego cargamos el conjunto de datos:
hs.add("Erick");
hs.add("Byron");
hs.add("Byron"); // Los elementos solo pueden estar una vez
hs.add("Gerson");
Cuando se agrega un elemento repetido (Byron), este elemento solo aparecerá 1 vez.
Para recorrer nuestro objeto debemos implementar un iterador:
Iterator i_hs = hs.iterator();
Utilizando el método .next() nos movemos a través del iterador:
while (iter.hasNext())
System.out.println(iter.next());
Treeset - Árboles
Esta clase implementa la interface Set, basada en una instancia de TreeMap. Esta clase garantiza que el ordenamiento de los elementos será en orden ascendente, ordenando de acuerdo al orden natural de los elementos, o por el comparador proveído al momento de creación, dependiendo de qué constructor es utilizado.
Esta implementación provee método del tipo agregar, remover y contiene (contains).
Esta implementación al igual que Hashset no está sincronizada.
La clase TreeSet es muy similar a la anterior, HashSet, con la diferencia de que esta vez los elementos si están ordenados. Esta estructura es el típico árbol binario que todos conocemos. El rendimiento es inferior al de los conjuntos indexados, aunque aquí los elementos siempre están ordenados y en algunos casos el rendimiento es mucho mejor que un Array o una lista ordenada.
Antes de utilizar esta clase debe hacerse el siguiente importe:
import java.util.TreeSet;
Para crear un nuevo objeto de tipo TreeSet se implementa el siguiente código:
TreeSet lista2 = new TreeSet();
Si se desea agregar elemento se utiliza el método add de la siguiente manera:
hs.add("Elemento 1");
hs.add("Elemento 2");
Es importante mencionar que los elementos que agreguemos pueden ser de cualquier tipo. Para motivos de ejemplo, aquí agregamos objetos de tipo String.
Al igual que las clases explicadas anteriormente, para recorrer los elementos de un objeto de Tipo TreeSet se utiliza un iterador:
Iterator i_hs = ts.iterator();
Y mediante el método .hasNext() accedemos a los elementos:
while (iter.hasNext())
System.out.println(iter.next());
Bibliografía
“Arraylist”, Sun Microsystems, http://java.sun.com/j2se/1.3/docs/api/java/util/List.html
“Iterar y Recorrer un ArrayList o Lista de Objetos”, Facultad de Ingeniería, Universidad de Buenos Aires, http://listas.fi.uba.ar/pipermail/mat7507f/2005-September/001978.html
“Colecciones de la API de Java”, Instituto de Tecnología de Massachusetts, http://mit.ocw.universia.net/6.170/6.170/f01/pdf/lecture-16.pdf
“LinkedList”, Sun Microsystems, http://java.sun.com/j2se/1.4.2/docs/api/java/util/LinkedList.html
“HashSet”, Sun Microsystems, http://java.sun.com/j2se/1.4.2/docs/api/java/util/HashSet.html
“Listar un conjunto”, Solotuweb, http://www.solotuweb.com/fs~id~215.html
“Treeset”, Sun Microsystems, http://java.sun.com/j2se/1.4.2/docs/api/java/util/TreeSet.html
“Introducción al API Collections”, Java Hispano, http://www.javahispano.org/contenidos/es/introduccrion_al_api_collections/

0 comentarios:
Publicar un comentario en la entrada