Cómo usar Collection, Set, List y Map en Java | el holgazán

domingo 22 de julio de 2007

Cómo usar Collection, Set, List y Map en Java

Interfaces

Estos son los interfaces definidos para manejar diversas estructuras de datos en Java, todos ellos definidos en el paquete java.util.*:

  • Collection
  • Set
  • SortedSet
  • List
  • Map
  • SortedMap

Las relaciones de herencia existentes entre ellos son las siguientes:

Implantaciones

Estas son las clases que implementan dichos interfaces:

  • HashSet: implementa Set
  • HashMap: implementa Map
  • ArrayList: implementa List
  • TreeSet: implementa SortedSet
  • TreeMap: implementa SortedMap
  • LinkedList: implementa List

Principales características

Todas las clases que implementan la interfaz collection se usan de forma similar. Lo que cambia es la forma en que se almacenan los elementos:

ordenados, con duplicidad, con acceso basado en una clave...

Algunas características:

  • Los elementos de una Collection se pueden recorrer secuencialmente y son accesibles mediente un índice.
  • Map contiene pares clave-objeto, de forma que los elementos son ordenados y son accesibles a través de sus claves.
  • Para recorrer un Map debe antes extraerse de él una Collection.
  • ArrayList y LinkedList pueden usarse amodo de pila, añadiendo y eliminando elementos.
  • TreeMap y TreeSet están ordenados.
  • Set y Map no pueden tener duplicados.

Almacenamiento de objetos

  • HashSet, TreeSet
set.add(object) - Añade en algún sitio, en el orden que tengan los elementos
  • LinkedList
list.add(object) - Añade al final
list.add(index, object) - Añade en la posición dada por el índice, desplazando previamente los elementos necesarios
  • ArrayList
list.add(object) - Añade al final
list.add(index, object) - Añade en la posición dada por el índice, desplazando previamente los elementos necesarios
list.set(index,object) - Sobreescribe el elemento con dicho índice
  • HashMap, TreeMap
map.put(key,value) - El objeto con su clave se situan en el lugar que le corresponda según el orden de las claves.

Recuperación y manejo de objetos

Algunos métodos comunes son:

clear( );
size( );
remove(object);

Para Collection:

obj = c.remove(index);
bool = c.contains(obj);
objArr = c.toArray( );

En concreto para LinkedList y ArrayList:

bool = c.contains(obj);
objArr = c.toArray( );

Para HashMap y TreeMap:

obj = m.get(key);
obj = m.remove(key);
bool = m.containsKey(key);
bool = m.containsValue(key);
collection = m.values( );
set = m.keySet( );

Transformaciones

Se puede pasar de un tipo de estructura a otra, de forma que así se eliminen los duplicados, se ordenen los elementos, se cree un array, etc., según sea el caso.

Cualquier tipo de Collection puede transformarse a otra Collection, simplemente al crear una nueva instancia:

Set set = new HashSet();
.... rellenar el Set ....
SortedSet ss = new TreeSet(set);

Los Map se transforman en Collection eliminando las claves:

Collection col = tm.values();

Cualquier Collection puede transformarse en un Array:

Object [] obj = collection.toArray();

Recorrer una Collection

La forma de recorrer una Collection es mediante un Iterator:

for (Iterator it=coll.iterator(); it.hasNext( ); ) {
Object anObject = it.next( );
System.out.println( anObject );
}

2 comentarios

Anónimo dijo...

Bueno, solo un poco mas de explicacion no me la mandes asi como asi... gracias!!!

Rodrigo-Azul dijo...

gracias muy util la informacion!