Java LanguageColecciones


Introducción

El marco de colecciones en java.util proporciona una serie de clases genéricas para conjuntos de datos con una funcionalidad que no pueden ser proporcionadas por matrices regulares.

El marco de colecciones contiene interfaces para la Collection<O> , con la lista de subinterfaces principales List<O> y Set<O> , y el Map<K,V> colección de mapeo Map<K,V> . Las colecciones son la interfaz raíz y están siendo implementadas por muchos otros marcos de colección.

Observaciones

Las colecciones son objetos que pueden almacenar colecciones de otros objetos dentro de ellos. Puede especificar el tipo de datos almacenados en una colección usando Genéricos .

Las colecciones generalmente usan los espacios de nombres java.util o java.util.concurrent .

Java SE 1.4

Java 1.4.2 y versiones anteriores no son compatibles con los genéricos. Como tal, no puede especificar los parámetros de tipo que contiene una colección. Además de no tener seguridad de tipo, también debe usar moldes para recuperar el tipo correcto de una colección.

Además de la Collection<E> , hay varios tipos principales de colecciones, algunas de las cuales tienen subtipos.

  • List<E> es una colección ordenada de objetos. Es similar a una matriz, pero no define un límite de tamaño. Las implementaciones generalmente aumentarán de tamaño internamente para acomodar nuevos elementos.
  • Set<E> es una colección de objetos que no permite duplicados.
    • SortedSet<E> es un Set<E> que también especifica el orden de los elementos.
  • Map<K,V> es una colección de pares clave / valor.
    • SortedMap<K,V> es un Map<K,V> que también especifica el orden de los elementos.
Java SE 5

Java 5 agrega un nuevo tipo de colección:

  • Queue<E> es una colección de elementos destinados a ser procesados ​​en un orden específico. La implementación especifica si esto es FIFO o LIFO. Esto obsoleta la clase Stack .
Java SE 6

Java 6 agrega algunos nuevos subtipos de colecciones.

  • NavigableSet<E> es un Set<E> con métodos de navegación especiales integrados.
  • NavigableMap<K,V> es un Map<K,V> con métodos de navegación especiales integrados.
  • Deque<E> es una Queue<E> que puede leerse desde cualquier extremo.

Tenga en cuenta que los elementos anteriores son todas las interfaces. Para utilizarlos, debe encontrar las clases de implementación adecuadas, como ArrayList , HashSet , HashMap o PriorityQueue .

Cada tipo de colección tiene implementaciones múltiples que tienen diferentes métricas de rendimiento y casos de uso.

Tenga en cuenta que el principio de sustitución de Liskov se aplica a los subtipos de colección. Es decir, se puede pasar un SortedSet<E> a una función que espera un Set<E> . También es útil leer sobre Parámetros delimitados en la sección Genéricos para obtener más información sobre cómo usar colecciones con herencia de clase.

Si desea crear sus propias colecciones, puede ser más fácil heredar una de las clases abstractas (como AbstractList ) en lugar de implementar la interfaz.

Java SE 1.2

Antes de la versión 1.2, tenías que usar las siguientes clases / interfaces en su lugar:

  • Vector lugar de ArrayList
  • Dictionary lugar de Map . Tenga en cuenta que el diccionario también es una clase abstracta en lugar de una interfaz.
  • Hashtable lugar de HashMap

Estas clases son obsoletas y no deben usarse en el código moderno.

Colecciones Ejemplos relacionados