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 | Mastering Map in Java
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Java Datastrukturer

bookMap 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

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

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

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

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

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

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

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?

question mark

Hva er tidskompleksiteten til en algoritme som itererer gjennom et array av størrelse n og utfører en konstant-tidsoperasjon på hvert element?

Select the correct answer

question mark

Hva er hovedulempen ved å hardkode verdier direkte i koden?

Select the correct answer

question mark

Gitt to algoritmer med tidskompleksitetene O(n log n) og O(n^2), hvilken er vanligvis mer effektiv for store inputstørrelser?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 4

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

bookMap 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

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

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

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

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

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

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

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?

question mark

Hva er tidskompleksiteten til en algoritme som itererer gjennom et array av størrelse n og utfører en konstant-tidsoperasjon på hvert element?

Select the correct answer

question mark

Hva er hovedulempen ved å hardkode verdier direkte i koden?

Select the correct answer

question mark

Gitt to algoritmer med tidskompleksitetene O(n log n) og O(n^2), hvilken er vanligvis mer effektiv for store inputstørrelser?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 4
some-alt