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 | Dominando Map em Java
Estruturas de Dados em Java

bookMapa com Outras Estruturas de Dados

De modo geral, não há muito mais a dizer sobre mapas. Saber que é uma estrutura de dados que armazena informações com base no princípio de chave-valor já é suficiente. Mas e se você quiser experimentar algo diferente e utilizar uma estrutura de dados como um ArrayList como valor em um mapa?

Utilizando Estruturas de Dados como Valores em um Map

Talvez você tenha poucas colisões no hashmap e queira armazenar dados de uma forma ainda mais 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); } }

Aqui está um exemplo de criação de uma estrutura de dados que armazena informações sobre uma determinada empresa. Essa abordagem é às vezes utilizada ao trabalhar com bancos de dados, mas não é recomendável abusar dela, pois a recuperação de dados dessas estruturas de dados pode ser desafiadora. Por exemplo, suponha que desejamos recuperar o marketer 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. Basta utilizar o método mais uma vez. No entanto, em programação, é fundamental evitar hardcoding.

Hardcoding é prejudicial e deve ser evitado de todas as formas. Veja 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 pode ser observado, há hardcoding no código acima. Ao especificar o desconto, utilizamos um número simples. É necessário armazenar esse desconto em uma variável para que possamos reutilizar esse valor posteriormente. Vamos aprimorar o código acima:

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

Dessa forma, obtém-se uma variável com o valor do desconto, e em um programa grande no futuro, seria necessário alterar apenas o valor dessa única variável.

Se o valor estivesse fixado no código, seria preciso alterá-lo em todas as ocorrências, o que aumentaria significativamente o tempo necessário para aprimorar ou editar o código.

Resumo

Em resumo, pode-se afirmar que em estruturas de dados, diversos tipos de dados, incluindo outras estruturas de dados, podem ser utilizados. Isso adiciona praticidade ao uso dessas estruturas e flexibilidade à aplicação. No entanto, não se deve esquecer da complexidade algorítmica, pois é um parâmetro crucial ao desenvolver uma aplicação. Ao utilizar estruturas de dados dentro de outras estruturas de dados, é relativamente 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 percorre um array de tamanho n e executa uma operação de tempo constante em cada elemento?

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

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

question mark

Qual é a complexidade de tempo de um algoritmo que percorre um array de tamanho n e executa 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

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

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

bookMapa com Outras Estruturas de Dados

Deslize para mostrar o menu

De modo geral, não há muito mais a dizer sobre mapas. Saber que é uma estrutura de dados que armazena informações com base no princípio de chave-valor já é suficiente. Mas e se você quiser experimentar algo diferente e utilizar uma estrutura de dados como um ArrayList como valor em um mapa?

Utilizando Estruturas de Dados como Valores em um Map

Talvez você tenha poucas colisões no hashmap e queira armazenar dados de uma forma ainda mais 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); } }

Aqui está um exemplo de criação de uma estrutura de dados que armazena informações sobre uma determinada empresa. Essa abordagem é às vezes utilizada ao trabalhar com bancos de dados, mas não é recomendável abusar dela, pois a recuperação de dados dessas estruturas de dados pode ser desafiadora. Por exemplo, suponha que desejamos recuperar o marketer 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. Basta utilizar o método mais uma vez. No entanto, em programação, é fundamental evitar hardcoding.

Hardcoding é prejudicial e deve ser evitado de todas as formas. Veja 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 pode ser observado, há hardcoding no código acima. Ao especificar o desconto, utilizamos um número simples. É necessário armazenar esse desconto em uma variável para que possamos reutilizar esse valor posteriormente. Vamos aprimorar o código acima:

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

Dessa forma, obtém-se uma variável com o valor do desconto, e em um programa grande no futuro, seria necessário alterar apenas o valor dessa única variável.

Se o valor estivesse fixado no código, seria preciso alterá-lo em todas as ocorrências, o que aumentaria significativamente o tempo necessário para aprimorar ou editar o código.

Resumo

Em resumo, pode-se afirmar que em estruturas de dados, diversos tipos de dados, incluindo outras estruturas de dados, podem ser utilizados. Isso adiciona praticidade ao uso dessas estruturas e flexibilidade à aplicação. No entanto, não se deve esquecer da complexidade algorítmica, pois é um parâmetro crucial ao desenvolver uma aplicação. Ao utilizar estruturas de dados dentro de outras estruturas de dados, é relativamente 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 percorre um array de tamanho n e executa uma operação de tempo constante em cada elemento?

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

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

question mark

Qual é a complexidade de tempo de um algoritmo que percorre um array de tamanho n e executa 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

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

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

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