lunes, 20 de mayo de 2013

Colecciones

Tenemos 2 interfaces centrales:

  • java.util.Collection,permite básicamente añadir, eliminar y recorrer la estructura gracias a un Iterator:
    • List: son listas, estructura de datos secuencial, en la que cada elemento tiene una posición o índice, y que permite elementos duplicados.
      • ArrayList: el tamaño de la lista se aumenta dinamicamente, permite valores nulos y se pueden realizar búsquedas rápidas, localizar cualquier elemento de la lista sin tener que recorrerla.No esta sincronizada.
      • LinkedList: permite grandes inserciones y eliminaciones de elementos rápidos y  permite que se agreguen o eliminen elementos en la lista al inicio o al final pero no se puede acceder a elementos intermedios sin recorrer antes la lista.
      • Vector: igual que ArrayList pero esta sincronizado..
    • Set: son conjuntos,los elementos no tienen un orden, y no se permiten elementos duplicados.
      • HashSet:almacena sus elementos en una tabla Hash(estructura clave valor) y su orden es aleatorio.
      • TreeSet:guardar sus elementos en un árbol, ordenando sus elementos en base a sus valores, y por lo tanto es más lento que un HashSet.
        • SortedSet --> interfaz que almacena elementos sin duplicados y ordenados.
      • LinkedHashSet: versión ordenada de HashSet.
  • java.io.Map no se trata de una colección sino de un mapeo, es la que define la interfaz Map,cada valor tiene asociado una clave, tenemos la posibilidad de sobreescribir los métodos equals() y hashcode().
    • HashMap:  es una tabla en la que podemos insertar claves. Implementa el interface Map, lo cual nos permite utilizar los métodos relativos a los mapas,los valores que se van insertando en la colección internamente no tendrán un orden especifico,no están sincronizados, no permite claves duplicadas,una clave nula y múltiples  valores  nulos.
    • TreeMap: un mapa ordenado de forma natural, puede definir un tipo de orden (a través de las interfaces Comparable y Comparator)
      • SortedMap --> sus elementos están ordenados.
    • LinkedHashMap:version ordenada de HashMap, pero mantiene los elementos ordenados. Y porque es un poco más lento para agregar o quitar elementos de la colección. Pero permite una iteración más veloz

Para cada una de las interfaces tenemos una clase abstracta.