Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Mapa com Outras Estruturas de Dados | Mapa
Estruturas de Dados em Java

bookMapa com Outras Estruturas de Dados

Em geral, não há muito mais a dizer sobre mapas. A informação de que se trata de uma estrutura de dados que armazena informações com base no princípio da chave-valor é suficiente. Mas e se quisermos nos aventurar um pouco e passar uma estrutura de dados como um ArrayList como valor no mapa?

Passando Estruturas de Dados como Valores em um Mapa

Talvez tenhamos pouca colisão no hashmap, e poderíamos querer armazenar dados de uma maneira ainda mais peculiar.

Por exemplo:

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

Aqui está um exemplo de criação de uma estrutura de dados que armazena informações sobre uma determinada empresa. Essa abordagem é algumas vezes utilizada quando se trabalha com bases de dados, mas é aconselhável não abusar dela, pois recuperar dados de tais estruturas de dados pode ser desafiador. Por exemplo, suponha que queremos recuperar o profissional de marketing no í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); } }

À primeira vista, não parece complicado. Você só precisa usar o método mais uma vez. No entanto, na programação, é crucial evitar a codificação fixa.

O hardcoding é ruim e deve ser evitado de todas as maneiras. Vou mostrar-lhe um exemplo com hardcoding e, em seguida, vamos corrigi-lo 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 você pode ver, existe "hardcoding" no código acima. Ao especificar o desconto, utilizamos um número simples. Precisamos armazenar este desconto em uma variável para que possamos reutilizar este valor posteriormente. Vamos melhorar o código acima:

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

Desta forma, obtemos uma variável com o valor do desconto, e em um grande programa no futuro, precisaríamos mudar apenas o valor desta única variável.

Se tivéssemos fixado o valor no código, teríamos que alterar o valor em cada instância, aumentando significativamente o tempo necessário para aprimorar ou editar o código.

Resumo

Em resumo, pode-se dizer que em estruturas de dados, vários tipos de dados, incluindo outras estruturas de dados, podem ser utilizados. Isso adiciona conveniência ao uso dessas estruturas de dados e flexibilidade à sua aplicação. No entanto, não se deve esquecer da complexidade algorítmica, pois é um parâmetro crucial na escrita de uma aplicação. Ao utilizar estruturas de dados dentro de outras estruturas de dados, pode ser bastante fácil cometer erros e complicar significativamente a execução de uma operação específica.

Fique atento a isso, e seu código será excelente!

1. Qual é a complexidade de tempo de um algoritmo que itera por um array de tamanho n e realiza uma operação de tempo constante em cada elemento?

2. Qual é a principal desvantagem de codificar valores diretamente no código?

3. Considerando dois algoritmos com complexidades temporais O(n log n) e O(n^2), qual deles é geralmente mais eficiente para tamanhos grandes de entrada?

question mark

Qual é a complexidade de tempo de um algoritmo que itera por um array de tamanho n e realiza uma operação de tempo constante em cada elemento?

Select the correct answer

question mark

Qual é a principal desvantagem de codificar valores diretamente no código?

Select the correct answer

question mark

Considerando dois algoritmos com complexidades temporais O(n log n) e O(n^2), qual deles é geralmente mais eficiente para tamanhos grandes de entrada?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 4

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

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?

Awesome!

Completion rate improved to 4

bookMapa com Outras Estruturas de Dados

Deslize para mostrar o menu

Em geral, não há muito mais a dizer sobre mapas. A informação de que se trata de uma estrutura de dados que armazena informações com base no princípio da chave-valor é suficiente. Mas e se quisermos nos aventurar um pouco e passar uma estrutura de dados como um ArrayList como valor no mapa?

Passando Estruturas de Dados como Valores em um Mapa

Talvez tenhamos pouca colisão no hashmap, e poderíamos querer armazenar dados de uma maneira ainda mais peculiar.

Por exemplo:

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

Aqui está um exemplo de criação de uma estrutura de dados que armazena informações sobre uma determinada empresa. Essa abordagem é algumas vezes utilizada quando se trabalha com bases de dados, mas é aconselhável não abusar dela, pois recuperar dados de tais estruturas de dados pode ser desafiador. Por exemplo, suponha que queremos recuperar o profissional de marketing no í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); } }

À primeira vista, não parece complicado. Você só precisa usar o método mais uma vez. No entanto, na programação, é crucial evitar a codificação fixa.

O hardcoding é ruim e deve ser evitado de todas as maneiras. Vou mostrar-lhe um exemplo com hardcoding e, em seguida, vamos corrigi-lo 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 você pode ver, existe "hardcoding" no código acima. Ao especificar o desconto, utilizamos um número simples. Precisamos armazenar este desconto em uma variável para que possamos reutilizar este valor posteriormente. Vamos melhorar o código acima:

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

Desta forma, obtemos uma variável com o valor do desconto, e em um grande programa no futuro, precisaríamos mudar apenas o valor desta única variável.

Se tivéssemos fixado o valor no código, teríamos que alterar o valor em cada instância, aumentando significativamente o tempo necessário para aprimorar ou editar o código.

Resumo

Em resumo, pode-se dizer que em estruturas de dados, vários tipos de dados, incluindo outras estruturas de dados, podem ser utilizados. Isso adiciona conveniência ao uso dessas estruturas de dados e flexibilidade à sua aplicação. No entanto, não se deve esquecer da complexidade algorítmica, pois é um parâmetro crucial na escrita de uma aplicação. Ao utilizar estruturas de dados dentro de outras estruturas de dados, pode ser bastante fácil cometer erros e complicar significativamente a execução de uma operação específica.

Fique atento a isso, e seu código será excelente!

1. Qual é a complexidade de tempo de um algoritmo que itera por um array de tamanho n e realiza uma operação de tempo constante em cada elemento?

2. Qual é a principal desvantagem de codificar valores diretamente no código?

3. Considerando dois algoritmos com complexidades temporais O(n log n) e O(n^2), qual deles é geralmente mais eficiente para tamanhos grandes de entrada?

question mark

Qual é a complexidade de tempo de um algoritmo que itera por um array de tamanho n e realiza uma operação de tempo constante em cada elemento?

Select the correct answer

question mark

Qual é a principal desvantagem de codificar valores diretamente no código?

Select the correct answer

question mark

Considerando dois algoritmos com complexidades temporais O(n log n) e O(n^2), qual deles é geralmente mais eficiente para tamanhos grandes de entrada?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 4
some-alt