Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Map Med Andre Datastrukturer | Sektion
Fundamentale Datastrukturer i Java

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?

Indsættelse 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

Main.java

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

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 ved indeks 1.

Main.java

Main.java

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

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.

Hardkodning er uhensigtsmæssigt, og det bør undgås på alle måder. Her er et eksempel med hardkodning, som vi derefter vil forbedre:

Main.java

Main.java

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

Som det fremgår, er der hardkodning i koden ovenfor. Ved angivelse af rabatten bruges et almindeligt tal. Vi skal gemme denne rabat i en variabel for at kunne genbruge værdien senere. Lad os forbedre koden ovenfor:

Main.java

Main.java

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

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 værdien var hardkodet, skulle man ændre værdien i alle forekomster, hvilket væsentligt ø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 øget bekvemmelighed ved anvendelse af disse datastrukturer og fleksibilitet til applikationen. 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?

question mark

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?

Vælg det korrekte svar

question mark

Hvad er den største ulempe ved at hardkode værdier direkte i koden?

Vælg det korrekte svar

question mark

Givet to algoritmer med tidskompleksiteterne O(n log n) og O(n^2), hvilken er generelt mere effektiv for store inputstørrelser?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 16

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 1. Kapitel 16
some-alt