Map Med Andre Datastrukturer
Generelt er det ikke så mye mer å si om maps. Det holder å vite at det er en datastruktur som lagrer data basert på nøkkel-verdi-prinsippet. Men hva om du ønsker å gjøre noe litt mer avansert og bruke en datastruktur som en ArrayList som verdi i map-en?
Bruk av datastrukturer som verdier i en map
Kanskje vil du oppleve for lite kollisjon i hashmapen, og ønsker å lagre data på en enda mer spesiell måte.
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å opprettelse av en datastruktur som lagrer informasjon om et bestemt selskap. Denne tilnærmingen brukes noen ganger når man arbeider med databaser, men det anbefales å ikke misbruke den, da henting av data fra slike datastrukturer kan være utfordrende. For eksempel, anta at vi ønsker å hente ut markedsføreren 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 øyekast virker det ikke komplisert. Du trenger bare å bruke metoden én gang til. Likevel er det avgjørende i programmering å unngå hardkoding.
Hardkoding er uheldig, og det bør unngås på alle måter. Her er et eksempel med hardkoding, som vi deretter skal forbedre sammen:
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 du ser, finnes det hardkoding i koden ovenfor. Når vi spesifiserer rabatten, bruker vi et vanlig tall. Vi bør lagre denne rabatten i en variabel slik at vi kan gjenbruke verdien senere. La oss 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åten oppnår vi en variabel med rabattverdien, og i et større program i fremtiden vil vi kun trenge å endre verdien til denne ene variabelen.
Hvis vi hadde hardkodet den, måtte vi endre verdien i hver forekomst, noe som betydelig øker tiden det tar å forbedre eller redigere koden.
Oppsummering
Oppsummert kan det sies at i datastrukturer kan ulike typer data, inkludert andre datastrukturer, benyttes. Dette gir økt brukervennlighet for disse datastrukturene og fleksibilitet til applikasjonen din. Likevel må man ikke glemme algoritmisk kompleksitet, da dette er en viktig parameter ved utvikling av en applikasjon. Ved bruk av datastrukturer innenfor andre datastrukturer kan det være lett å gjøre feil og betydelig komplisere utførelsen av en spesifikk operasjon.
Vær oppmerksom på dette, så vil koden din bli utmerket!
1. Hva er tidskompleksiteten til en algoritme som itererer gjennom et array av størrelse n og utfører en konstant-tidsoperasjon på hvert element?
2. Hva er hovedulempen ved å hardkode verdier direkte i koden?
3. Gitt to algoritmer med tidskompleksitetene O(n log n) og O(n^2), hvilken er vanligvis mer effektiv for store inputstørrelser?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Fantastisk!
Completion rate forbedret til 4
Map Med Andre Datastrukturer
Sveip for å vise menyen
Generelt er det ikke så mye mer å si om maps. Det holder å vite at det er en datastruktur som lagrer data basert på nøkkel-verdi-prinsippet. Men hva om du ønsker å gjøre noe litt mer avansert og bruke en datastruktur som en ArrayList som verdi i map-en?
Bruk av datastrukturer som verdier i en map
Kanskje vil du oppleve for lite kollisjon i hashmapen, og ønsker å lagre data på en enda mer spesiell måte.
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å opprettelse av en datastruktur som lagrer informasjon om et bestemt selskap. Denne tilnærmingen brukes noen ganger når man arbeider med databaser, men det anbefales å ikke misbruke den, da henting av data fra slike datastrukturer kan være utfordrende. For eksempel, anta at vi ønsker å hente ut markedsføreren 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 øyekast virker det ikke komplisert. Du trenger bare å bruke metoden én gang til. Likevel er det avgjørende i programmering å unngå hardkoding.
Hardkoding er uheldig, og det bør unngås på alle måter. Her er et eksempel med hardkoding, som vi deretter skal forbedre sammen:
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 du ser, finnes det hardkoding i koden ovenfor. Når vi spesifiserer rabatten, bruker vi et vanlig tall. Vi bør lagre denne rabatten i en variabel slik at vi kan gjenbruke verdien senere. La oss 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åten oppnår vi en variabel med rabattverdien, og i et større program i fremtiden vil vi kun trenge å endre verdien til denne ene variabelen.
Hvis vi hadde hardkodet den, måtte vi endre verdien i hver forekomst, noe som betydelig øker tiden det tar å forbedre eller redigere koden.
Oppsummering
Oppsummert kan det sies at i datastrukturer kan ulike typer data, inkludert andre datastrukturer, benyttes. Dette gir økt brukervennlighet for disse datastrukturene og fleksibilitet til applikasjonen din. Likevel må man ikke glemme algoritmisk kompleksitet, da dette er en viktig parameter ved utvikling av en applikasjon. Ved bruk av datastrukturer innenfor andre datastrukturer kan det være lett å gjøre feil og betydelig komplisere utførelsen av en spesifikk operasjon.
Vær oppmerksom på dette, så vil koden din bli utmerket!
1. Hva er tidskompleksiteten til en algoritme som itererer gjennom et array av størrelse n og utfører en konstant-tidsoperasjon på hvert element?
2. Hva er hovedulempen ved å hardkode verdier direkte i koden?
3. Gitt to algoritmer med tidskompleksitetene O(n log n) og O(n^2), hvilken er vanligvis mer effektiv for store inputstørrelser?
Takk for tilbakemeldingene dine!