Mapa con Otras Estructuras de Datos
En general, no hay mucho más que decir sobre los mapas. La información de que es una estructura de datos que almacena datos basados en el principio de clave-valor es suficiente. Pero, ¿qué sucede si deseas experimentar un poco y pasar una estructura de datos como un ArrayList como valor en el mapa?
Pasar estructuras de datos como valores en un mapa
Quizás tengas muy pocas colisiones en el hashmap, y podrías querer almacenar datos de una manera aún más peculiar.
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); } }
Aquí tienes un ejemplo de creación de una estructura de datos que almacena información sobre una empresa en particular. Este enfoque se utiliza a veces al trabajar con bases de datos, pero es recomendable no abusar de él, ya que recuperar datos de este tipo de estructuras de datos puede ser complicado. Por ejemplo, supongamos que queremos recuperar al marketer 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. Solo necesitas usar el método una vez más. Sin embargo, en programación, es fundamental evitar el uso de valores codificados.
El uso de valores codificados de forma fija es perjudicial y debe evitarse en todo momento. A continuación, se muestra un ejemplo con valores codificados, y luego lo corregiremos:
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 se puede observar, existe codificación fija en el código anterior. Al especificar el descuento, se utiliza un número simple. Es necesario almacenar este descuento en una variable para poder reutilizar este valor posteriormente. Mejoraremos el código anterior:
Main.java
12345678910111213package com.example; public 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 manera, se obtiene una variable con el valor del descuento, y en un programa grande en el futuro, solo sería necesario cambiar el valor de esta única variable.
Si se hubiera codificado de forma fija, habría que cambiar el valor en cada instancia, 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 diversos tipos de datos, incluyendo otras estructuras de datos. Esto agrega comodidad al uso de estas estructuras de datos y flexibilidad a la aplicación. Sin embargo, no se debe olvidar la complejidad algorítmica, ya que es un parámetro crucial al 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.
Presta atención a esto y tu código será excelente!
1. ¿Cuál es la complejidad temporal de un algoritmo que itera a través de un arreglo de tamaño n y realiza una operación de tiempo constante en cada elemento?
2. ¿Cuál es la principal desventaja de codificar valores directamente en el código?
3. Dado 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
Can you give an example of how to store an ArrayList as a value in a map?
What are some best practices to avoid hardcoding in such scenarios?
Can you explain more about the potential challenges of retrieving data from nested data structures?
Genial!
Completion tasa mejorada a 4
Mapa con Otras Estructuras de Datos
Desliza para mostrar el menú
En general, no hay mucho más que decir sobre los mapas. La información de que es una estructura de datos que almacena datos basados en el principio de clave-valor es suficiente. Pero, ¿qué sucede si deseas experimentar un poco y pasar una estructura de datos como un ArrayList como valor en el mapa?
Pasar estructuras de datos como valores en un mapa
Quizás tengas muy pocas colisiones en el hashmap, y podrías querer almacenar datos de una manera aún más peculiar.
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); } }
Aquí tienes un ejemplo de creación de una estructura de datos que almacena información sobre una empresa en particular. Este enfoque se utiliza a veces al trabajar con bases de datos, pero es recomendable no abusar de él, ya que recuperar datos de este tipo de estructuras de datos puede ser complicado. Por ejemplo, supongamos que queremos recuperar al marketer 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. Solo necesitas usar el método una vez más. Sin embargo, en programación, es fundamental evitar el uso de valores codificados.
El uso de valores codificados de forma fija es perjudicial y debe evitarse en todo momento. A continuación, se muestra un ejemplo con valores codificados, y luego lo corregiremos:
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 se puede observar, existe codificación fija en el código anterior. Al especificar el descuento, se utiliza un número simple. Es necesario almacenar este descuento en una variable para poder reutilizar este valor posteriormente. Mejoraremos el código anterior:
Main.java
12345678910111213package com.example; public 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 manera, se obtiene una variable con el valor del descuento, y en un programa grande en el futuro, solo sería necesario cambiar el valor de esta única variable.
Si se hubiera codificado de forma fija, habría que cambiar el valor en cada instancia, 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 diversos tipos de datos, incluyendo otras estructuras de datos. Esto agrega comodidad al uso de estas estructuras de datos y flexibilidad a la aplicación. Sin embargo, no se debe olvidar la complejidad algorítmica, ya que es un parámetro crucial al 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.
Presta atención a esto y tu código será excelente!
1. ¿Cuál es la complejidad temporal de un algoritmo que itera a través de un arreglo de tamaño n y realiza una operación de tiempo constante en cada elemento?
2. ¿Cuál es la principal desventaja de codificar valores directamente en el código?
3. Dado 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!