Middle
Describa la jerarquía de colecciones en Java.
sobes.tech AI
Respuesta de la IA
La jerarquía de colecciones en Java se basa en un conjunto de interfaces que proporcionan una forma estándar de representar grupos de objetos.
Interfaces principales:
Collection: interfaz raíz de la jerarquía. Define operaciones básicas aplicables a todas las colecciones: añadir, eliminar, verificar la existencia de elementos, determinar tamaño.Set: colección que no contiene duplicados y no tiene un orden definido de los elementos.List: colección ordenada con acceso a elementos por índice. Puede contener duplicados.Queue: colección destinada a almacenar elementos antes del procesamiento. Generalmente sigue la regla FIFO (Primero en entrar, primero en salir), pero existen otras implementaciones.Deque: cola doble. Soporta añadir y eliminar elementos desde ambos extremos.Map: colección que almacena pares de "clave-valor". Las claves deben ser únicas. No extiende la interfazCollection.
Clases principales que implementan estas interfaces (ejemplos):
| Interfaz | Clases que la implementan (ejemplos) | Descripción |
|---|---|---|
Set |
HashSet, LinkedHashSet, TreeSet |
Sin duplicados. HashSet - sin orden, LinkedHashSet - mantiene el orden de inserción, TreeSet - ordenado. |
List |
ArrayList, LinkedList, Vector |
Ordenada. ArrayList - basada en array, LinkedList - basada en lista enlazada, Vector - sincronizada (obsoleta). |
Queue |
LinkedList, PriorityQueue |
Para procesamiento. LinkedList - FIFO, PriorityQueue - basada en prioridades. |
Deque |
ArrayDeque, LinkedList |
Cola doble. ArrayDeque - basada en array, LinkedList - basada en lista enlazada. |
Map |
HashMap, LinkedHashMap, TreeMap, Hashtable |
Clave-valor. HashMap - sin orden garantizado, LinkedHashMap - mantiene orden de inserción/acceso, TreeMap - ordenado por claves, Hashtable - sincronizado (obsoleto). |
Ejemplo de uso de ArrayList:
// Creación de ArrayList de cadenas
List<String> fruits = new ArrayList<>();
// Añadir elementos
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// Acceso por índice
String firstFruit = fruits.get(0); // Apple
// Tamaño de la colección
int size = fruits.size(); // 3
Ejemplo de uso de HashSet:
// Creación de HashSet de enteros
Set<Integer> numbers = new HashSet<>();
// Añadir elementos (los duplicados se ignoran)
numbers.add(1);
numbers.add(2);
numbers.add(2); // Ignorado
// Tamaño de la colección
int size = numbers.size(); // 2
Ejemplo de uso de HashMap:
// Creación de HashMap: clave - String, valor - Integer
Map<String, Integer> ages = new HashMap<>();
// Añadir pares clave-valor
ages.put("Alice", 30);
ages.put("Bob", 25);
// Obtener valor por clave
int aliceAge = ages.get("Alice"); // 30
// Verificar si existe la clave
boolean hasBob = ages.containsKey("Bob"); // true