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 | Mapa
Estructuras de Datos en Java

bookMapa 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

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); } }

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

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. 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

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

main.java

copy
1234567891011
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 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?

question mark

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

Select the correct answer

question mark

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

Select the correct answer

question mark

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?

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

Awesome!

Completion rate improved to 4

bookMapa 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

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); } }

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

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. 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

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

main.java

copy
1234567891011
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 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?

question mark

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

Select the correct answer

question mark

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

Select the correct answer

question mark

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?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

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