Primeros pasos con Java, colecciones dinámicas

Share if you like...Share on Facebook0Tweet about this on TwitterShare on Google+0Share on LinkedIn0

En el último post sobre java hablamos de los arrays, una clase que nos permite crear una colección de objetos, que si bien es muy interesante saber utilizar, tiene una serie de limitaciones que se solventan con otras colecciones existentes en Java. Podemos encontrar también unas colecciones dinámicas que no tienen un tamaño fijado previamente al crear el objeto, sino que nos permite añadirle datos a la colección según nos haga falta, aumentando su tamaño de forma dinámica con cada dato añadido.
Estas colecciones son:

  • Listas

    • ArrayList: Es en su uso igual al Array de una dimensión. Se debe parametrizar con el tipo de datos que puede contener para evitar una mezcla de objetos no deseada:
      ArrayList<Coches> misCoches = new ArrayList<Coches>()
      
  • Sets

    • Set (Interfaz): Es un conjunto de objetos, que no admite objetos duplicados. Se guardan de forma desordenada, por lo que no permite acceder al objeto a través de una posición ocupada, ya que ésta no existe.
    • SortSet (Interfaz): Es la versión ordenada de Set, ordena los objetos en orden ascendente.
    • HashSet: Es la elección más utilizada, a menos que el Set sea pequeño.
    • ArraySet: Es un Set encanjonado en un Array. Es útil para un Set pequeño, sobretodo si son creados y destruidos con frecuencia. Sin embargo para Sets con gran cantidad de elementos su rendimiento es muy malo.
    • TreeSet: Es un Set ordenado, almacenado en un árbol balanceado. TreeSet construye un árbol con los objetos que se van agregando al conjunto. Al tener todo en orden TreeSet puede fácilmente saber si un objeto está en su colección.
  • Mapas:

    Es una estructura de datos agrupados por parejas “clave/valor”.

    • Map (Interfaz): Mantiene las asociaciones de pares “clave/valor”, de forma que se puede encontrar cualquier valor a partir de la clave correspondiente.
    • SortedMap (Interfaz): Versión ordenada de un Map. Mantiene las claves ordenadas en orden numérico o alfabético. Se emplea para aplicaciones como diccionarios o directorios telefónicos.
    • HashMap: Es una implementación basada en una tabla hash. Proporciona un rendimiento muy constante a la hora de insertar y localizar cualquier pareja de valores.
    • TreeMap: Es una implementación basada en un árbol balanceado. Cuando se observan las cclaves o los valores, se comprueba que están colocados en un orden concreto. Lo más importante de un TreeMap es que se pueden recuperar los elementos en un determinado orden. Tiene el método subMap() que permite recuperar únicamente una parte del árbol.

Nota: Para todas las colecciones ordenadas es posible especificar su orden, sobreescribiendo su método compareTo():

@Override
public int compareTo(Object o) {
     // Modificar el algoritmo del método.
}

Una forma de recorrer las colecciones es a través del bucle for-each:

for(Coche tmp : misCoches)
     // Por cada Coche, nombrado a tmp, en la colección misCoches
     tmp.setNombre("coche1");
     // Todos los coches pasan a llamarse "coche1"
Share if you like...Share on Facebook0Tweet about this on TwitterShare on Google+0Share on LinkedIn0
The following two tabs change content below.
Reborn as IT Developer. Desarrollador Android y fundador de Proyecto Simio. "En realidad, yo no puedo enseñar nada a nadie, sólo puedo hacerles pensar." - Sócrates.

Deja un comentario