Teoría Nueva JAVA - Java Collections Framework 1
Teoría Nueva JAVA - Java Collections Framework 1
Existen dos árboles de interfaces, uno que comienza con la interfaz Collection e
incluye Set, SortedSet, List, Queue y Deque, y el otro que comienza con Map e
incluye SortedMap.
Las colecciones en Java trabajan con genéricos, lo que significa que debemos
especificar el tipo de dato que contendrá la colección al declararla. Además, es
importante que los objetos personalizados que utilicemos en las colecciones
implementen los métodos hashCode() y equals(). Al implementar estos métodos
en nuestros objetos personalizados, aseguramos que las colecciones puedan
realizar búsquedas, comparaciones y eliminaciones correctamente.
- Métodos:
Los métodos marcados con "operación opcional” implican que son opcionales y
que las clases que implementan esta interfaz pueden implementar sus métodos
lanzando una excepción UnsupportedOperationException. Las implementaciones
que vamos a ver implementan correctamente todos los métodos,
○ <T> T[] toArray(T[] a): Devuelve un arreglo que contiene todos los
elementos de esta colección; el tipo de tiempo de ejecución del
arreglo devuelto es el del arreglo especificado.
Un Iterator es una interfaz en Java que proporciona una forma de iterar y recorrer
los elementos de una colección de forma secuencial.
- Métodos:
○ boolean hasNext(): Devuelve true si la iteración tiene más
elementos para recorrer.
Colecciones de vista
ListIterator
- Métodos propios:
Un Set es una colección que no permite elementos duplicados. Esto se define por
la semántica del método add en un Set, que devuelve false si el elemento ya está
presente en el conjunto y no se agrega..
HashSet utiliza una estructura de datos llamada "hash table" para almacenar y
administrar elementos únicos. Una hash table es una estructura de datos que
utiliza una función de hash para asignar claves a ubicaciones en una tabla, lo
que permite un acceso rápido y eficiente a los elementos. Pero produce que no
se pueda garantizar un orden específico de los elementos.
Map
○ int hashCode(): Devuelve el valor del código hash para este mapa.
○ boolean isEmpty(): Devuelve true si este mapa no contiene mapeos
clave-valor.
HashMap utiliza una estructura de datos de tabla hash para almacenar los
elementos. Cada elemento se almacena en una ubicación de la tabla hash
calculada mediante la función de hash de la clave.
Clases de utilidad
Collections
○ void copy(List<? super T> dest, List<? extends T> src): Copia todos
los elementos de una lista en otra lista.
○ void fill(List<? super T> list, T obj): Reemplaza todos los elementos de
la lista especificada con el elemento especificado.
○ void swap(List<?> list, int i, int j): Intercambia los elementos en las
posiciones especificadas de la lista especificada.
Arrays
○ T[] copyOfRange(U[] original, int from, int to, Class<? extends T[]>
newType): Copia el rango especificado del arreglo especificado en
un nuevo arreglo.
○ void sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c):
Ordena el rango especificado del arreglo de objetos especificado
según el orden especificado por el comparador.
○ parallelSetAll()
○ parallelSort()
○ splitIterator()
○ stream()
El ArrayList es la estructura por default que siempre usarás cuando quieras usar
una colección de elementos.
Existen más implementaciones específicas para distintos casos pero no son las
más utilizadas y no serán abordadas en este módulo.