Estructuras de Datos en Java Arrays

Listas (ArrayList, LinkedList)

En Java, las listas son estructuras de datos que permiten almacenar y manipular colecciones de elementos. Dos implementaciones comunes de listas en Java son ArrayList y LinkedList.

Código del Programa

				
					import java.util.ArrayList;
import java.util.LinkedList;

public class Listas {
    
    public static void main(String[] args) {
        
        // ArrayList
        System.out.println("ArrayList:");
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("Manzana");
        arrayList.add("Banana");
        arrayList.add("Naranja");

        for (String fruta : arrayList) {
            System.out.println(fruta);
        }

        // LinkedList
        System.out.println("\nLinkedList:");
        LinkedList<Integer> linkedList = new LinkedList<>();
        linkedList.add(10);
        linkedList.add(20);
        linkedList.add(30);

        for (int numero : linkedList) {
            System.out.println(numero);
        }
    }
}

				
			

Explicación del Código

  1. ArrayList:

    • ArrayList es una implementación de la interfaz List que utiliza un arreglo para almacenar los elementos. Permite agregar, eliminar y acceder a elementos de manera eficiente.
    • En el ejemplo, creamos un ArrayList de cadenas y agregamos algunas frutas. Luego, iteramos sobre la lista e imprimimos cada elemento.
  2. LinkedList:

    • LinkedList es otra implementación de la interfaz List que utiliza una lista doblemente enlazada para almacenar los elementos. Permite agregar y eliminar elementos de manera eficiente, pero el acceso aleatorio es más lento que en ArrayList.
    • En el ejemplo, creamos una LinkedList de números enteros y agregamos algunos números. Luego, iteramos sobre la lista e imprimimos cada número.

Conjuntos (HashSet, TreeSet)

En Java, los conjuntos son colecciones que no permiten elementos duplicados. Dos implementaciones comunes de conjuntos en Java son HashSet y TreeSet.

Código del Programa

				
					import java.util.HashSet;
import java.util.TreeSet;

public class Conjuntos {
    
    public static void main(String[] args) {
        
        // HashSet
        System.out.println("HashSet:");
        HashSet<String> hashSet = new HashSet<>();
        hashSet.add("Manzana");
        hashSet.add("Banana");
        hashSet.add("Naranja");
        hashSet.add("Manzana"); // Intentamos agregar un elemento duplicado

        for (String fruta : hashSet) {
            System.out.println(fruta);
        }

        // TreeSet
        System.out.println("\nTreeSet:");
        TreeSet<Integer> treeSet = new TreeSet<>();
        treeSet.add(30);
        treeSet.add(10);
        treeSet.add(20);

        for (int numero : treeSet) {
            System.out.println(numero);
        }
    }
}

				
			

Explicación del Código

  1. HashSet:

    • HashSet es una implementación de la interfaz Set que utiliza una tabla hash para almacenar los elementos. No permite elementos duplicados y no garantiza el orden de los elementos.
    • En el ejemplo, creamos un HashSet de cadenas y agregamos algunas frutas. Intentamos agregar una fruta duplicada («Manzana»), pero como los conjuntos no permiten duplicados, esta no se agrega dos veces.
  2. TreeSet:

    • TreeSet es otra implementación de la interfaz Set que almacena los elementos en un árbol binario ordenado. No permite elementos duplicados y los elementos se almacenan en orden natural o según un comparador proporcionado.
    • En el ejemplo, creamos un TreeSet de números enteros y agregamos algunos números. Los números se imprimirán en orden ascendente automáticamente.

Mapas (HashMap, TreeMap)

En Java, los mapas son colecciones que almacenan pares clave-valor, donde cada clave está asociada a un valor único. Dos implementaciones comunes de mapas en Java son HashMap y TreeMap.

Código del Programa

				
					import java.util.HashMap;
import java.util.TreeMap;

public class Mapas {
    
    public static void main(String[] args) {
        
        // HashMap
        System.out.println("HashMap:");
        HashMap<String, Integer> hashMap = new HashMap<>();
        hashMap.put("Manzana", 10);
        hashMap.put("Banana", 20);
        hashMap.put("Naranja", 30);
        hashMap.put("Manzana", 40); // Sobrescribe el valor anterior de "Manzana"

        for (String fruta : hashMap.keySet()) {
            System.out.println(fruta + ": " + hashMap.get(fruta));
        }

        // TreeMap
        System.out.println("\nTreeMap:");
        TreeMap<String, Integer> treeMap = new TreeMap<>();
        treeMap.put("Tercero", 30);
        treeMap.put("Primero", 10);
        treeMap.put("Segundo", 20);

        for (String clave : treeMap.keySet()) {
            System.out.println(clave + ": " + treeMap.get(clave));
        }
    }
}

				
			

Explicación del Código

  1. HashMap:

    • HashMap es una implementación de la interfaz Map que utiliza una tabla hash para almacenar los pares clave-valor. No permite claves duplicadas y permite un solo valor nulo.
    • En el ejemplo, creamos un HashMap que mapea nombres de frutas a cantidades. Al intentar agregar una fruta con una clave que ya existe («Manzana»), el valor se sobrescribe.
  2. TreeMap:

    • TreeMap es otra implementación de la interfaz Map que almacena los pares clave-valor en un árbol ordenado por las claves. No permite claves duplicadas y los elementos se ordenan en orden natural o según un comparador proporcionado.
    • En el ejemplo, creamos un TreeMap que mapea nombres de posición a números. Los elementos se imprimirán en orden ascendente de las claves.