1. Colecciones en Android (Java)
  2. La interfaz Collection

En este artículo vamos a ver las diferentes clases que podemos encontrar en Java para guardar colecciones de datos y sus diferentes formas de uso mediante ejemplos.

Los interfaces de Colección

El Framework colecciones (collections) define varios interfaces. Esta sección proporciona una visión general de cada interfaz:

  1. El Interfaz Collection:
    Permite trabajar con grupos de objetos; está en la parte superior de la jerarquía de las colleciones.
  2. El interfaz List:
    Extiende Collection y es una instancia de Lista que almacena ordenadamente una colección de elementos.
  3. El interfaz Set:
    Extiende Collection para manejar sets, que deben contener elementos únicos
  4. El interfaz SortedSet:
    Extiende Set para manejar sets ordenados
  5. Map:
    Mapea claves únicas a valores.
  6. Map.Entry:
    Describe un elemento (una pareja clave/valor) en un mapa. Es una clase interna de Map.
  7. SortedMap:
    Extiende Map para mantener las claves ordenadas de manera ascendente.
  8. Enumeration:
    Es una interfaz heredada y define los métodos por los que puedes enumerar (obtener uno cada vez) los elementos en una colección de objetos. Este interfaz heredado ha sido sustituida por Iterator.

Las clases de Colección

Java proporciona un conjunto de clases de colección estándar que implementan interfaces Collection. Algunas de las clases proporcionan implementaciones completas que se pueden utilizar tal cual, y otros son clase abstracta, proporcionando implementaciones esqueléticas que se utilizan como puntos de partida para la creación de colecciones concretas.

Las clases de colección estándar se resumen en la tabla siguiente:

  1. AbstractCollection:
    Implements most of the Collection interface.
  2. AbstractList
    Extends AbstractCollection and implements most of the List interface.
  3. AbstractSequentialList:
    Extends AbstractList for use by a collection that uses sequential rather than random access of its elements.
  4. LinkedList:
    Implements a linked list by extending AbstractSequentialList.
  5. ArrayList:
    Implements a dynamic array by extending AbstractList.
  6. AbstractSet:
    Extends AbstractCollection and implements most of the Set interface.
  7. HashSet:
    Extends AbstractSet for use with a hash table.
  8. LinkedHashSet:
    Extends HashSet to allow insertion-order iterations.
  9. TreeSet:
    Implements a set stored in a tree. Extends AbstractSet.
  10. AbstractMap:
    Implements most of the Map interface.
  11. HashMap:
    Extends AbstractMap to use a hash table.
  12. TreeMap:
    Extends AbstractMap to use a tree.
  13. WeakHashMap:
    Extends AbstractMap to use a hash table with weak keys.
  14. LinkedHashMap:
    Extends HashMap to allow insertion-order iterations.
  15. IdentityHashMap:
    Extends AbstractMap and uses reference equality when comparing documents.

Las clases AbstractCollection, AbstractSet, AbstractList, AbstractSequentialList y AbstractMap proporcionan implementaciones esqueleto de las interfaces básicas de recogida, para minimizar el esfuerzo necesario para ponerlas en práctica.

Las siguientes clases heredados definidos por java.util se han discutido en el tutorial anterior:

  1. Vector:
    This implements a dynamic array. It is similar to ArrayList, but with some differences.
  2. Stack:
    Stack is a subclass of Vector that implements a standard last-in, first-out stack.
  3. Dictionary:
    Dictionary is an abstract class that represents a key/value storage repository and operates much like Map.
  4. Hashtable:
    Hashtable was part of the original java.util and is a concrete implementation of a Dictionary.
  5. Properties:
    Properties is a subclass of Hashtable. It is used to maintain lists of values in which the key is a String and the value is also a String.
  6. BitSet:
    A BitSet class creates a special type of array that holds bit values. This array can increase in size as needed.

Los algoritmos de Colección

El framework Collections define varios algoritmos que se pueden aplicar a las colecciones y los mapas. Estos algoritmos se definen como métodos estáticos de la clase Collections.

Varios de los métodos pueden lanzar una ClassCastException, que se produce cuando se hace un intento de comparar tipos incompatibles, o un UnsupportedOperationException, que se produce cuando se hace un intento de modificar una colección no modificable.

Colecciones definen tres variables estáticas: EMPTY_SET, EMPTY_LIST, y EMPTY_MAP. Todas son inmutables.

Los algoritmos de Collection
Aquí encontrarás una lista de los algoritmos de Collection

Cómo se usa Iterator ?

A menudo, tendremos que recorrer los elementos de una colección. Por ejemplo, es posible que queramos mostrar cada elemento.

La forma más sencilla de hacerlo es utilizar un repetidor (Iterator), que es un objeto que implementa tanto el Iterator o la interfaz ListIterator.

Iterator le permite desplazarse a través de una colección, obtener o eliminar elementos. ListIterator extiende Iterator para permitir recorrido bidireccional de una lista y la modificación de elementos.

Usando Iterator en Java

Aquí encontrarás una lista de todos los métodos con ejemplos proporcionados por Iterator e interfaces ListIterator
Cómo usar Comparator

Tanto TreeSet como TreeMap almacenan elementos de forma ordenada. Sin embargo, es el comparador lo que define con precisión el tipo de ordenación.

Esta interfaz permite clasificar una colección dada de diferentes maneras. También se puede utilizar esta interfaz para clasificar cualquier instancia de cualquier clase (incluso las clases que no se pueden modificar).

Sumario

El framework Collections de Java nos ofrece acceso a los desarrolladores a estructuras de datos pre-empaquetadas, así como a los algoritmos para la manipulación de estos.

Una colección es un objeto que puede contener referencias a otros objetos. Las interfaces de la colección declaran las operaciones que se pueden realizar en cada tipo de colección.

Las clases e interfaces del marco de colecciones en el paquete java.util.