|
| 1 | +package retosProgramacion; |
| 2 | + |
| 3 | +import java.util.ArrayList; |
| 4 | +import java.util.Arrays; |
| 5 | +import java.util.Collections; |
| 6 | +import java.util.HashMap; |
| 7 | +import java.util.HashSet; |
| 8 | +import java.util.LinkedList; |
| 9 | +import java.util.List; |
| 10 | +import java.util.PriorityQueue; |
| 11 | +import java.util.Queue; |
| 12 | +import java.util.Scanner; |
| 13 | +import java.util.Stack; |
| 14 | +import java.util.TreeMap; |
| 15 | +import java.util.TreeSet; |
| 16 | + |
| 17 | +public class RetoCuatro { |
| 18 | + |
| 19 | + public static void main(String[] args) { |
| 20 | +/* |
| 21 | + //Array (No hay borrado) |
| 22 | + int[] numeros = {1, 2, 3, 4, 5}; |
| 23 | + numeros[0] = 0; //Inserción |
| 24 | + numeros[0] = 10; //Actualización |
| 25 | + Arrays.sort(numeros); //Ordenación |
| 26 | + System.out.println(numeros[0]); //Acceso |
| 27 | +
|
| 28 | + //ArrayList |
| 29 | + ArrayList<String> lista = new ArrayList<>(); |
| 30 | + lista.add("Kilian"); //Inserción |
| 31 | + lista.add("Hernández"); |
| 32 | + lista.add("Chirino"); |
| 33 | + lista.add(1, "Daniel"); //Inserción en una posición determinada |
| 34 | + lista.set(0, "Kili"); //Actualización |
| 35 | + lista.remove(1); //Borrado |
| 36 | + Collections.sort(lista); //Ordenación (alfabética) |
| 37 | + System.out.println(lista); |
| 38 | +
|
| 39 | + //LinkedList |
| 40 | + LinkedList<String> lista2 = new LinkedList<>(); |
| 41 | + lista2.add("Elena"); //Inserción |
| 42 | + lista2.addFirst("Ele"); |
| 43 | + lista2.addLast("Espino"); |
| 44 | + lista2.add(2, "González"); |
| 45 | + lista2.set(0, "Elenita"); //Actualización |
| 46 | + lista2.remove(0); //Borrado |
| 47 | + Collections.sort(lista2); //Ordenación |
| 48 | + System.out.println(lista2); |
| 49 | +
|
| 50 | + //HashSet (No hay actualización...sería borrar y añadir de nuevo) |
| 51 | + HashSet<String> lista3 = new HashSet<>(); |
| 52 | + lista3.add("Kilian"); //Inserción |
| 53 | + lista3.add("Elena"); |
| 54 | + lista3.add("Daniel"); |
| 55 | + lista3.remove("Daniel"); //Borrado |
| 56 | + System.out.println(lista3); |
| 57 | + List<String> sortedList = new ArrayList(lista3); //Ordenación(hay que convertirla en una ArrayList) |
| 58 | + Collections.sort(sortedList); |
| 59 | + System.out.println(sortedList); |
| 60 | +
|
| 61 | + //TreeSet (No hay actualización...sería borrar y añadir de nuevo. | Se ordena automáticamente.) |
| 62 | + TreeSet<String> lista4 = new TreeSet<>(); |
| 63 | + lista4.add("Real Madrid"); //Inserción |
| 64 | + lista4.add("Barcelona"); |
| 65 | + lista4.add("Las Palmas"); |
| 66 | + lista4.remove("Barcelona"); //Borrado |
| 67 | + System.out.println(lista4); |
| 68 | +
|
| 69 | + //TreeMap (Se ordena automáticamente) |
| 70 | + TreeMap<Integer, String> lista7 = new TreeMap<>(); |
| 71 | + lista7.put(1, "Real Madrid"); //Inserción |
| 72 | + lista7.put(0, "Barcelona"); |
| 73 | + lista7.replace(0, "Las Palmas"); //Actualización |
| 74 | + lista7.remove(0); //Borrado |
| 75 | + System.out.println(lista7); |
| 76 | +
|
| 77 | + //HashMap |
| 78 | + HashMap<String, String> lista5 = new HashMap<>(); |
| 79 | + lista5.put("Subcampeón ", " Real Madrid"); //Inserción |
| 80 | + lista5.put("Campeón ", " Las Palmas"); |
| 81 | + lista5.put("Último ", " Barcelona"); |
| 82 | + lista5.replace("Último ", " Tenerife"); //Actualización |
| 83 | + lista5.remove("Último "); //Borrado |
| 84 | + System.out.println(lista5); |
| 85 | + TreeMap<String, String> sortedMap = new TreeMap<>(lista5); //Ordenación (Convirtiéndolo a un TreeMap) |
| 86 | + System.out.println(sortedMap); |
| 87 | +
|
| 88 | + //Stack |
| 89 | + Stack<String> pila = new Stack<>(); |
| 90 | + pila.push("Pedri"); //Inserción |
| 91 | + pila.push("Yeremi"); |
| 92 | + pila.remove("Pedri"); |
| 93 | + pila.push("Ayoze"); //Actualización (Borrar y añadir) |
| 94 | + pila.sort(String::compareTo); //Ordenación |
| 95 | + pila.pop(); //Borrado del último elemento |
| 96 | + System.out.println(pila); |
| 97 | +
|
| 98 | + //Queue |
| 99 | + Queue<String> cola = new LinkedList<>(); |
| 100 | + cola.add("Valerón"); //Inserción |
| 101 | + cola.add("Silva"); |
| 102 | + cola.remove("Silva"); |
| 103 | + cola.add("Viera"); //Actualización (Borrar y añadir) |
| 104 | + LinkedList<String> sortedCola = new LinkedList<>(cola); //Ordenación |
| 105 | + sortedCola.sort(String::compareTo); |
| 106 | + cola.poll(); //Borrado del primer elemento |
| 107 | + System.out.println(cola); |
| 108 | + System.out.println(sortedCola); |
| 109 | +
|
| 110 | + //PriorityQueue (no permite actualización, ni ordenación) |
| 111 | + PriorityQueue<String> lista6 = new PriorityQueue<>(); |
| 112 | + lista6.add("España"); //Inserción |
| 113 | + lista6.add("Alemania"); |
| 114 | + lista6.remove("Alemania"); //Borrado |
| 115 | + lista6.add("Inglaterra"); |
| 116 | + lista6.add("Francia"); |
| 117 | + System.out.println(lista6); |
| 118 | +*/ |
| 119 | + agenda(); |
| 120 | + |
| 121 | + } |
| 122 | + |
| 123 | + //Dificultad Extra |
| 124 | + public static void agenda() { |
| 125 | + |
| 126 | + Scanner leer = new Scanner(System.in); |
| 127 | + |
| 128 | + HashMap<String, Long> memoria = new HashMap<>(); |
| 129 | + |
| 130 | + boolean flujo = true; |
| 131 | + |
| 132 | + |
| 133 | + |
| 134 | + while (flujo) { |
| 135 | + System.out.println( |
| 136 | + "\n" |
| 137 | + + "--------AGENDA--------\n" |
| 138 | + + "1.Buscar Contacto\n" |
| 139 | + + "2.Insertar Contacto\n" |
| 140 | + + "3.Actualizar Contacto\n" |
| 141 | + + "4.Eliminar Contacto\n" |
| 142 | + + "5.Salir de la Agenda\n" |
| 143 | + + "Elige una de las opciones:\n"); |
| 144 | + |
| 145 | + int opcion = leer.nextInt(); |
| 146 | + |
| 147 | + switch (opcion) { |
| 148 | + case 1: |
| 149 | + System.out.println("Introduce el nombre: \n"); |
| 150 | + String name = leer.next(); |
| 151 | + if (memoria.containsKey(name)) { |
| 152 | + System.out.printf("Su numero es: \n" + memoria.get(name)); |
| 153 | + } else { |
| 154 | + System.out.println("El contacto no existe"); |
| 155 | + } |
| 156 | + break; |
| 157 | + case 2: |
| 158 | + System.out.print("Ingrese el nombre: \n"); |
| 159 | + name = leer.next(); |
| 160 | + System.out.print("Ingrese el número: \n"); |
| 161 | + Long numero = leer.nextLong(); |
| 162 | + if(numero.toString(numero).length() == 9) { |
| 163 | + memoria.put(name, numero); |
| 164 | + System.out.println("Contacto insertado"); |
| 165 | + }else { |
| 166 | + System.out.println("Error: El número debe tener 9 dígitos"); |
| 167 | + } |
| 168 | + break; |
| 169 | + case 3: |
| 170 | + System.out.println("Ingrese el nombre del contacto que quiere actualizar: \n"); |
| 171 | + name = leer.next(); |
| 172 | + System.out.println("Ingrese su nuevo número: \n"); |
| 173 | + numero = leer.nextLong(); |
| 174 | + if(numero.toString(numero).length() == 9 && memoria.containsKey(name)){ |
| 175 | + memoria.replace(name, numero); |
| 176 | + System.out.println("Contacto actualizado"); |
| 177 | + }else { |
| 178 | + System.out.println("Error: El nombre debe existir en la agenda y el nuevo número debe tener 9 dígitos"); |
| 179 | + } |
| 180 | + break; |
| 181 | + case 4: |
| 182 | + System.out.println("Ingrese el nombre: \n"); |
| 183 | + name = leer.next(); |
| 184 | + if(memoria.containsKey(name)) { |
| 185 | + memoria.remove(name); |
| 186 | + System.out.println("Contacto borrado"); |
| 187 | + }else { |
| 188 | + System.out.println("Error: El contacto no existe en la agenda"); |
| 189 | + } |
| 190 | + break; |
| 191 | + case 5: |
| 192 | + System.out.println("Salió de la Agenda"); |
| 193 | + flujo = false; |
| 194 | + break; |
| 195 | + default: |
| 196 | + System.out.println("Error: Elige una opción del 1 al 5"); |
| 197 | + } |
| 198 | + |
| 199 | + } |
| 200 | + leer.close(); |
| 201 | + |
| 202 | + } |
| 203 | + |
| 204 | +} |
| 205 | + |
| 206 | + |
| 207 | +/* |
| 208 | + * EJERCICIO: |
| 209 | + * - Muestra ejemplos de creación de todas las estructuras soportadas por defecto |
| 210 | + * en tu lenguaje. |
| 211 | + * - Utiliza operaciones de inserción, borrado, actualización y ordenación. |
| 212 | + * |
| 213 | + * DIFICULTAD EXTRA (opcional): |
| 214 | + * Crea una agenda de contactos por terminal. |
| 215 | + * - Debes implementar funcionalidades de búsqueda, inserción, actualización |
| 216 | + * y eliminación de contactos. |
| 217 | + * - Cada contacto debe tener un nombre y un número de teléfono. |
| 218 | + * - El programa solicita en primer lugar cuál es la operación que se quiere realizar, |
| 219 | + * y a continuación los datos necesarios para llevarla a cabo. |
| 220 | + * - El programa no puede dejar introducir números de teléfono no númericos y con más |
| 221 | + * de 11 dígitos (o el número de dígitos que quieras). |
| 222 | + * - También se debe proponer una operación de finalización del programa. |
| 223 | + */ |
0 commit comments