Sobes.tech
Junior

¿Cuáles son las implementaciones de colecciones en el lenguaje de programación Java?

sobes.tech AI

Respuesta de la IA

  • Interfaces:

    • Collection: Interfaz base para todas las colecciones.
    • List: Colección ordenada (con índices).
    • Set: Colección que no contiene duplicados.
    • SortedSet: Colección sin duplicados, cuyos elementos están ordenados.
    • Map: Matriz asociativa (clave-valor).
    • SortedMap: Matriz asociativa ordenada por claves.
    • Queue: Colección para almacenar elementos antes de su procesamiento.
    • Deque: Cola doblemente enlazada.
  • Clases (implementaciones principales):

    • Para List:

      • ArrayList: Array dinámico. Acceso rápido por índice, operaciones de inserción/eliminación lentas en el medio.
      • LinkedList: Lista doblemente enlazada. Acceso lento por índice, operaciones rápidas de inserción/eliminación en el medio.
      • Vector: Antiguo, sincronizado, análogo a ArrayList.
      • Stack: Subclase de Vector, que implementa una pila (LIFO).
    • Para Set:

      • HashSet: Implementación basada en tabla hash. No garantiza orden.
      • LinkedHashSet: Basado en tabla hash y lista enlazada. Mantiene el orden de inserción.
      • TreeSet: Basado en árbol rojo-negro. Elementos ordenados en orden ascendente.
    • Para Map:

      • HashMap: Basado en tabla hash. No garantiza orden de pares clave-valor.
      • Hashtable: Antiguo, sincronizado, análogo a HashMap.
      • LinkedHashMap: Basado en tabla hash y lista enlazada. Mantiene el orden de inserción.
      • TreeMap: Basado en árbol rojo-negro. Pares ordenados por clave.
    • Para Queue:

      • PriorityQueue: Cola de prioridad. Elementos extraídos en orden natural o por comparador.
      • ArrayDeque: Implementación de doble cola basada en array.
  • Utilidades:

    • Collections: Métodos estáticos para trabajar con colecciones (ordenar, buscar, sincronizar, etc.).
// Ejemplo de uso de ArrayList
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
System.out.println(names.get(0)); // Alice
// Ejemplo de uso de HashSet
Set<Integer> numbers = new HashSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(1); // No se añadirá el duplicado
System.out.println(numbers.size()); // 2
// Ejemplo de uso de HashMap
Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
ages.put("Bob", 25);
System.out.println(ages.get("Alice")); // 30
// Ejemplo de uso de PriorityQueue
Queue<Integer> priorityQueue = new PriorityQueue<>();
priorityQueue.add(3);
priorityQueue.add(1);
priorityQueue.add(2);
System.out.println(priorityQueue.poll()); // 1 (el de menor prioridad)