Sobes.tech
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 interfaz Collection.

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