Map Med Andre Datastrukturer
Generelt er der ikke meget mere at sige om maps. Oplysningen om, at det er en datastruktur, der gemmer data baseret på nøgle-værdi-princippet, er tilstrækkelig. Men hvad nu hvis du ønsker at eksperimentere lidt og indsætte en datastruktur som en ArrayList som værdi i map'en?
Brug af datastrukturer som værdier i en map
Måske vil du opleve for få kollisioner i hashmap'et, og du kunne have lyst til at gemme data på en endnu mere speciel måde.
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); } }
Her er et eksempel på oprettelse af en datastruktur, der gemmer information om en bestemt virksomhed. Denne tilgang anvendes nogle gange ved arbejde med databaser, men det anbefales ikke at overforbruge den, da hentning af data fra sådanne datastrukturer kan være udfordrende. For eksempel, antag at vi ønsker at hente marketingmedarbejderen på indeks 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); } }
Ved første øjekast virker det ikke kompliceret. Du skal blot bruge metoden én gang mere. Dog er det i programmering afgørende at undgå hardcoding.
Hardcoding er uhensigtsmæssigt, og det bør undgås på alle måder. Her er et eksempel med hardcoding, som vi derefter vil rette:
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); } }
Som det fremgår, er der hardcoding i koden ovenfor. Ved angivelse af rabatten anvendes et almindeligt tal. Denne rabat bør gemmes i en variabel, så værdien kan genbruges senere. Lad os forbedre koden ovenfor:
Main.java
12345678910111213package 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); } }
På denne måde opnås en variabel med rabatværdien, og i et større program i fremtiden vil det kun være nødvendigt at ændre værdien af denne ene variabel.
Hvis det var blevet hardkodet, skulle værdien ændres i alle forekomster, hvilket betydeligt øger tiden det tager at forbedre eller redigere koden.
Sammenfatning
Sammenfattende kan det siges, at i datastrukturer kan forskellige typer data, herunder andre datastrukturer, anvendes. Dette giver bekvemmelighed ved anvendelsen af disse datastrukturer og fleksibilitet til din applikation. Dog bør man ikke glemme algoritmisk kompleksitet, da det er en afgørende parameter ved udvikling af en applikation. Ved anvendelse af datastrukturer inden i andre datastrukturer kan det være let at begå fejl og væsentligt komplicere udførelsen af en specifik operation.
Vær opmærksom på dette, og din kode vil være fremragende!
1. Hvad er tidskompleksiteten for en algoritme, der itererer gennem et array af størrelse n og udfører en konstant-tids operation på hvert element?
2. Hvad er den største ulempe ved at hardkode værdier direkte i koden?
3. Givet to algoritmer med tidskompleksiteterne O(n log n) og O(n^2), hvilken er generelt mere effektiv for store inputstørrelser?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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?
Fantastisk!
Completion rate forbedret til 4
Map Med Andre Datastrukturer
Stryg for at vise menuen
Generelt er der ikke meget mere at sige om maps. Oplysningen om, at det er en datastruktur, der gemmer data baseret på nøgle-værdi-princippet, er tilstrækkelig. Men hvad nu hvis du ønsker at eksperimentere lidt og indsætte en datastruktur som en ArrayList som værdi i map'en?
Brug af datastrukturer som værdier i en map
Måske vil du opleve for få kollisioner i hashmap'et, og du kunne have lyst til at gemme data på en endnu mere speciel måde.
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); } }
Her er et eksempel på oprettelse af en datastruktur, der gemmer information om en bestemt virksomhed. Denne tilgang anvendes nogle gange ved arbejde med databaser, men det anbefales ikke at overforbruge den, da hentning af data fra sådanne datastrukturer kan være udfordrende. For eksempel, antag at vi ønsker at hente marketingmedarbejderen på indeks 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); } }
Ved første øjekast virker det ikke kompliceret. Du skal blot bruge metoden én gang mere. Dog er det i programmering afgørende at undgå hardcoding.
Hardcoding er uhensigtsmæssigt, og det bør undgås på alle måder. Her er et eksempel med hardcoding, som vi derefter vil rette:
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); } }
Som det fremgår, er der hardcoding i koden ovenfor. Ved angivelse af rabatten anvendes et almindeligt tal. Denne rabat bør gemmes i en variabel, så værdien kan genbruges senere. Lad os forbedre koden ovenfor:
Main.java
12345678910111213package 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); } }
På denne måde opnås en variabel med rabatværdien, og i et større program i fremtiden vil det kun være nødvendigt at ændre værdien af denne ene variabel.
Hvis det var blevet hardkodet, skulle værdien ændres i alle forekomster, hvilket betydeligt øger tiden det tager at forbedre eller redigere koden.
Sammenfatning
Sammenfattende kan det siges, at i datastrukturer kan forskellige typer data, herunder andre datastrukturer, anvendes. Dette giver bekvemmelighed ved anvendelsen af disse datastrukturer og fleksibilitet til din applikation. Dog bør man ikke glemme algoritmisk kompleksitet, da det er en afgørende parameter ved udvikling af en applikation. Ved anvendelse af datastrukturer inden i andre datastrukturer kan det være let at begå fejl og væsentligt komplicere udførelsen af en specifik operation.
Vær opmærksom på dette, og din kode vil være fremragende!
1. Hvad er tidskompleksiteten for en algoritme, der itererer gennem et array af størrelse n og udfører en konstant-tids operation på hvert element?
2. Hvad er den største ulempe ved at hardkode værdier direkte i koden?
3. Givet to algoritmer med tidskompleksiteterne O(n log n) og O(n^2), hvilken er generelt mere effektiv for store inputstørrelser?
Tak for dine kommentarer!