Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Mapa con Otras Estructuras de Datos | Dominando Map en Java
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Estructuras de Datos en Java

bookMapa 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

Main.java

copy
1234567891011121314151617181920212223242526
package 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

Main.java

copy
1234567891011121314151617181920212223242526272829
package 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

Main.java

copy
123456789101112
package 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

Main.java

copy
12345678910111213
package 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?

question mark

¿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?

Select the correct answer

question mark

¿Cuál es la principal desventaja de codificar valores directamente en el código?

Select the correct answer

question mark

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?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 4

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

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?

bookMapa 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

Main.java

copy
1234567891011121314151617181920212223242526
package 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

Main.java

copy
1234567891011121314151617181920212223242526272829
package 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

Main.java

copy
123456789101112
package 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

Main.java

copy
12345678910111213
package 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?

question mark

¿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?

Select the correct answer

question mark

¿Cuál es la principal desventaja de codificar valores directamente en el código?

Select the correct answer

question mark

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?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 4
some-alt