Mapa con Otras Estructuras de Datos
En general, no hay mucho más que contar sobre los mapas. La información de que es una estructura de datos que almacena datos basándose en el principio key-value es suficiente. Pero, ¿qué pasa si queremos hacer una pequeña aventura y pasar una estructura de datos como una ArrayList
como valor en el mapa?.
Pasar estructuras de datos como valores en un mapa
Quizás tengamos demasiada poca colisión en el hashmap, y queramos almacenar datos de una forma aún más peculiar.
Por ejemplo:
main.java
1234567891011121314151617181920212223242526package com.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<String> marketingDepartment = new ArrayList<>(); marketingDepartment.add("Michael"); marketingDepartment.add("Alice"); marketingDepartment.add("Jimmy"); List<String> developerDepartment = new ArrayList<>(); developerDepartment.add("Bob"); developerDepartment.add("John"); developerDepartment.add("Ryan"); Map<String, List<String>> company = new HashMap<>(); company.put("Marketing", marketingDepartment); company.put("Development", developerDepartment); System.out.println("Company: " + company); } }
Este es un ejemplo de creación de una estructura de datos que almacena información sobre una empresa concreta. Este enfoque se utiliza a veces cuando se trabaja con bases de datos, pero es aconsejable no abusar de él, ya que recuperar datos de este tipo de estructuras de datos puede ser complicado. Por ejemplo, supongamos que queremos recuperar el comercializador en el índice 1:
main.java
1234567891011121314151617181920212223242526272829package com.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<String> marketingDepartment = new ArrayList<>(); marketingDepartment.add("Michael"); marketingDepartment.add("Alice"); marketingDepartment.add("Jimmy"); List<String> developerDepartment = new ArrayList<>(); developerDepartment.add("Bob"); developerDepartment.add("John"); developerDepartment.add("Ryan"); Map<String, List<String>> company = new HashMap<>(); company.put("Marketing", marketingDepartment); company.put("Development", developerDepartment); System.out.println("Company: " + company); String marketerAtIndexOne = company.get("Marketing").get(1); System.out.println("Marketer at index 1 is: " + marketerAtIndexOne); } }
A primera vista, no parece complicado. Basta con utilizar el método una vez más. Sin embargo, en programación es fundamental evitar la codificación rígida.
El hardcoding es malo, y debe evitarse por todos los medios. Déjame mostrarte un ejemplo con hardcoding, y luego lo arreglaremos juntos:
main.java
123456789101112package com.example public class Main { public static void main(String[] args) { // Hardcoded value double price = 49.99; // Using hardcoded value double discountedPrice = price * 0.8; // 20% discount System.out.println("Discounted Price: " + discountedPrice); } }
Como puede ver, hay hardcoding en el código anterior. Al especificar el descuento, utilizamos un número normal. Necesitamos almacenar este descuento en una variable para poder reutilizar este valor más adelante. Mejoremos el código anterior:
main.java
1234567891011public class Main { public static void main(String[] args) { // Using variables instead of hardcoding double price = 49.99; double discountPercentage = 0.2; // 20% discount // Using variables double discountedPrice = price * (1 - discountPercentage); System.out.println("Discounted Price: " + discountedPrice); } }
De esta forma, obtenemos una variable con el valor de descuento, y en un programa grande en el futuro, sólo necesitaríamos cambiar el valor de esta única variable.
Si la hubiéramos codificado, tendríamos que cambiar el valor en cada momento, lo que aumentaría significativamente el tiempo necesario para mejorar o editar el código.
Resumen
En resumen, se puede decir que en las estructuras de datos se pueden utilizar varios tipos de datos, incluidas otras estructuras de datos. Esto añade comodidad al uso de estas estructuras de datos y flexibilidad a su aplicación. Sin embargo, no hay que olvidar la complejidad algorítmica, ya que es un parámetro crucial a la hora de escribir una aplicación. Al utilizar estructuras de datos dentro de otras estructuras de datos, puede ser bastante fácil cometer errores y complicar significativamente la ejecución de una operación específica.
Tenlo en cuenta, ¡y tu código será excelente!
1. ¿Cuál es la complejidad temporal de un algoritmo que itera a través de un array de tamaño n
y realiza una operación en tiempo constante sobre cada elemento?
2. ¿Cuál es el principal inconveniente de codificar valores directamente en el código?
3. Dados dos algoritmos con complejidades temporales O(n log n)
y O(n^2)
, ¿cuál es generalmente más eficiente para tamaños de entrada grandes?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 4
Mapa con Otras Estructuras de Datos
Desliza para mostrar el menú
En general, no hay mucho más que contar sobre los mapas. La información de que es una estructura de datos que almacena datos basándose en el principio key-value es suficiente. Pero, ¿qué pasa si queremos hacer una pequeña aventura y pasar una estructura de datos como una ArrayList
como valor en el mapa?.
Pasar estructuras de datos como valores en un mapa
Quizás tengamos demasiada poca colisión en el hashmap, y queramos almacenar datos de una forma aún más peculiar.
Por ejemplo:
main.java
1234567891011121314151617181920212223242526package com.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<String> marketingDepartment = new ArrayList<>(); marketingDepartment.add("Michael"); marketingDepartment.add("Alice"); marketingDepartment.add("Jimmy"); List<String> developerDepartment = new ArrayList<>(); developerDepartment.add("Bob"); developerDepartment.add("John"); developerDepartment.add("Ryan"); Map<String, List<String>> company = new HashMap<>(); company.put("Marketing", marketingDepartment); company.put("Development", developerDepartment); System.out.println("Company: " + company); } }
Este es un ejemplo de creación de una estructura de datos que almacena información sobre una empresa concreta. Este enfoque se utiliza a veces cuando se trabaja con bases de datos, pero es aconsejable no abusar de él, ya que recuperar datos de este tipo de estructuras de datos puede ser complicado. Por ejemplo, supongamos que queremos recuperar el comercializador en el índice 1:
main.java
1234567891011121314151617181920212223242526272829package com.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<String> marketingDepartment = new ArrayList<>(); marketingDepartment.add("Michael"); marketingDepartment.add("Alice"); marketingDepartment.add("Jimmy"); List<String> developerDepartment = new ArrayList<>(); developerDepartment.add("Bob"); developerDepartment.add("John"); developerDepartment.add("Ryan"); Map<String, List<String>> company = new HashMap<>(); company.put("Marketing", marketingDepartment); company.put("Development", developerDepartment); System.out.println("Company: " + company); String marketerAtIndexOne = company.get("Marketing").get(1); System.out.println("Marketer at index 1 is: " + marketerAtIndexOne); } }
A primera vista, no parece complicado. Basta con utilizar el método una vez más. Sin embargo, en programación es fundamental evitar la codificación rígida.
El hardcoding es malo, y debe evitarse por todos los medios. Déjame mostrarte un ejemplo con hardcoding, y luego lo arreglaremos juntos:
main.java
123456789101112package com.example public class Main { public static void main(String[] args) { // Hardcoded value double price = 49.99; // Using hardcoded value double discountedPrice = price * 0.8; // 20% discount System.out.println("Discounted Price: " + discountedPrice); } }
Como puede ver, hay hardcoding en el código anterior. Al especificar el descuento, utilizamos un número normal. Necesitamos almacenar este descuento en una variable para poder reutilizar este valor más adelante. Mejoremos el código anterior:
main.java
1234567891011public class Main { public static void main(String[] args) { // Using variables instead of hardcoding double price = 49.99; double discountPercentage = 0.2; // 20% discount // Using variables double discountedPrice = price * (1 - discountPercentage); System.out.println("Discounted Price: " + discountedPrice); } }
De esta forma, obtenemos una variable con el valor de descuento, y en un programa grande en el futuro, sólo necesitaríamos cambiar el valor de esta única variable.
Si la hubiéramos codificado, tendríamos que cambiar el valor en cada momento, lo que aumentaría significativamente el tiempo necesario para mejorar o editar el código.
Resumen
En resumen, se puede decir que en las estructuras de datos se pueden utilizar varios tipos de datos, incluidas otras estructuras de datos. Esto añade comodidad al uso de estas estructuras de datos y flexibilidad a su aplicación. Sin embargo, no hay que olvidar la complejidad algorítmica, ya que es un parámetro crucial a la hora de escribir una aplicación. Al utilizar estructuras de datos dentro de otras estructuras de datos, puede ser bastante fácil cometer errores y complicar significativamente la ejecución de una operación específica.
Tenlo en cuenta, ¡y tu código será excelente!
1. ¿Cuál es la complejidad temporal de un algoritmo que itera a través de un array de tamaño n
y realiza una operación en tiempo constante sobre cada elemento?
2. ¿Cuál es el principal inconveniente de codificar valores directamente en el código?
3. Dados dos algoritmos con complejidades temporales O(n log n)
y O(n^2)
, ¿cuál es generalmente más eficiente para tamaños de entrada grandes?
¡Gracias por tus comentarios!