Mapa 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
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); } }
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
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); } }
À 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
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 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
1234567891011public 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?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 4
Mapa 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
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); } }
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
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); } }
À 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
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 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
1234567891011public 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?
Obrigado pelo seu feedback!