12 marzo 2021

HashMaps en Java

En esta ocasión les muestro como usar un HashMap en Java. Es una estructura dinámica que permite administrar eficientemente pares de datos: una llave y su valor asociado.

Aquí les comparto la presentación de la teoría:

Y, aunque viene en la presentación, aquí está el ejemplo en Java:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
/*
 * Ejemplo del uso de un HashMap
 */

import java.util.*;

public class HashMap_12 {
    
    public static void main(String[] args) {
        // Declarando el HashMap (nótese que deben ser objetos: Float 
        // es un objeto que engloa el tipo "primitivo" float)
        Map<String,Float> cambios = new HashMap<String,Float>();
        // Otras variables y objetos
        int op;
        Float cambio;
        String moneda;
        Scanner tec = new Scanner(System.in);
        
        // Todo en un ciclo para repetir las opciones
        do {
            // Muestro menú y pido opción
            System.out.println("MENU DE OPCIONES\n\t1. Agregar tipo de cambio");
            System.out.println("\t2. Buscar un tipo de cambio");
            System.out.println("\t3. Mostrar lista de tipos de cambios");
            System.out.println("\t4. Eliminar un tipo de cambio");
            System.out.println("\t5. Mostrar llaves y valores");
            System.out.println("\t6. Mostrar número de cambios capturados");
            System.out.println("\t7. Eliminar toda la informaci\u00F3n");
            System.out.print("\t99. Salir\nOpci\u00F3n: ");
            op = tec.nextInt();
            tec.nextLine();
            
            // Ejecuto acciones...
            switch (op) {
                case 1:     // Agregar tipo de cambio
                    // Pido clave y dato
                    System.out.println("Agregando tipo de cambio");
                    System.out.print("Escriba la clave del cambio (3 letras): ");
                    moneda = tec.nextLine();
                    System.out.print("Escriba el tipo de cambio: ");
                    cambio = tec.nextFloat();
                    tec.nextLine();
                    
                    // Agrego registro al HashMap
                    cambios.put(moneda, cambio);
                    break;
                case 2:     // Buscar tipo de cambio
                    // Pido clave
                    System.out.println("Buscando un tipo de cambio");
                    System.out.print("Escriba la clave del cambio (3 letras): ");
                    moneda = tec.nextLine();
                    
                    // Lo busco
                    cambio = cambios.get(moneda);
                    if (cambio != null) {
                        System.out.println("El tipo de cambio es: " + cambio);
                    } else {
                        System.out.println("No se ha dado de alta ese tipo de cambio");
                    }
                    break;
                case 3:     // Mostrar lista de tipos de cambios
                    // Veo todas las claves y las guardo en un Set
                    Set<String> claves = cambios.keySet();
                    
                    // Recorro todos los elementos con un for each
                    System.out.println("Tipos de cambio dados de alta:");
                    for(String x : claves) {
                        System.out.print(x + ", ");
                    }
                    System.out.println();
                    break;
                case 4:     // Eliminar un tipo de cambio
                    // Pido clave
                    System.out.println("Eliminar un tipo de cambio");
                    System.out.print("Escriba la clave del cambio (3 letras): ");
                    moneda = tec.nextLine();
                    
                    // Veo si existe
                    if (cambios.containsKey(moneda)) {
                        // Elimino la clave y valor
                        cambios.remove(moneda);
                    } else {
                        System.out.println("Esa clave no existe");
                    }
                    break;
                case 5:     // Mostrar claves y cambios (llaves con sus valores)
                    System.out.println("Lista de claves y cambios:");
                    System.out.println(cambios.toString());
                    break;
                case 6:     // Muestro el número de datos almacenados en el HashMap
                    System.out.println("Cantidad de cambios dados de alta: " +
                        cambios.size());
                    break;
                case 7:     // Elimina todo el HashMap
                    System.out.println("Eliminando todo el mapa");
                    // Eliminar todos los datos
                    cambios.clear();
                    break;
                case 99:
                    break;
                default:
                    System.out.println("Opción inv\u00E1lida");
            }
        } while (op != 99);
    }
}

Espero que esto les haya sido de utilidad. ¡Saludos!

El Tony y sus ondas...

Related Posts Plugin for WordPress, Blogger...