Map Met Andere Datastructuren
In het algemeen valt er niet veel meer te vertellen over maps. De informatie dat het een datastructuur is die gegevens opslaat op basis van het sleutel-waarde principe is voldoende. Maar wat als je een stap verder wilt gaan en een datastructuur zoals een ArrayList als waarde in de map wilt plaatsen?
Datastructuren als waarden in een Map
Misschien heb je te weinig botsingen in de hashmap, en wil je gegevens op een nog eigenaardigere manier opslaan.
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); } }
Hier is een voorbeeld van het aanmaken van een datastructuur die informatie over een bepaald bedrijf opslaat. Deze aanpak wordt soms gebruikt bij het werken met databases, maar het is raadzaam dit niet te overdrijven, omdat het ophalen van gegevens uit dergelijke datastructuren moeilijk kan zijn. Stel bijvoorbeeld dat we de marketeer op index 1 willen ophalen.
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); } }
Op het eerste gezicht lijkt het niet ingewikkeld. Je hoeft alleen de methode nog een keer te gebruiken. In de programmeertaal is het echter essentieel om hardcoding te vermijden.
Hardcoding is slecht, en het moet op alle mogelijke manieren worden vermeden. Hier volgt een voorbeeld met hardcoding, waarna we het samen zullen verbeteren:
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); } }
Zoals je kunt zien, is er sprake van hardcoding in de bovenstaande code. Bij het specificeren van de korting gebruiken we een los getal. We moeten deze korting in een variabele opslaan zodat we deze waarde later kunnen hergebruiken. Laten we de bovenstaande code verbeteren:
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); } }
Op deze manier verkrijgen we een variabele met de kortingswaarde, en in een groot programma in de toekomst hoeven we alleen de waarde van deze ene variabele aan te passen.
Als we deze hardcoded hadden, zouden we de waarde op elke plek moeten wijzigen, wat de tijd om de code te verbeteren of aan te passen aanzienlijk zou verhogen.
Samenvatting
Samenvattend kan worden gesteld dat in datastructuren verschillende typen gegevens, inclusief andere datastructuren, kunnen worden gebruikt. Dit voegt gemak toe aan het gebruik van deze datastructuren en flexibiliteit aan uw applicatie. Echter, men mag de algoritmische complexiteit niet vergeten, aangezien dit een cruciale parameter is bij het schrijven van een applicatie. Bij het gebruiken van datastructuren binnen andere datastructuren is het vrij eenvoudig om fouten te maken en de uitvoering van een specifieke bewerking aanzienlijk te compliceren.
Let hier goed op, en uw code zal uitstekend zijn!
1. Wat is de tijdcomplexiteit van een algoritme dat door een array van grootte n itereert en op elk element een bewerking met constante tijd uitvoert?
2. Wat is het belangrijkste nadeel van het hardcoden van waarden direct in de code?
3. Gegeven twee algoritmen met tijdcomplexiteiten O(n log n) en O(n^2), welke is over het algemeen efficiënter voor grote invoergroottes?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Geweldig!
Completion tarief verbeterd naar 4
Map Met Andere Datastructuren
Veeg om het menu te tonen
In het algemeen valt er niet veel meer te vertellen over maps. De informatie dat het een datastructuur is die gegevens opslaat op basis van het sleutel-waarde principe is voldoende. Maar wat als je een stap verder wilt gaan en een datastructuur zoals een ArrayList als waarde in de map wilt plaatsen?
Datastructuren als waarden in een Map
Misschien heb je te weinig botsingen in de hashmap, en wil je gegevens op een nog eigenaardigere manier opslaan.
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); } }
Hier is een voorbeeld van het aanmaken van een datastructuur die informatie over een bepaald bedrijf opslaat. Deze aanpak wordt soms gebruikt bij het werken met databases, maar het is raadzaam dit niet te overdrijven, omdat het ophalen van gegevens uit dergelijke datastructuren moeilijk kan zijn. Stel bijvoorbeeld dat we de marketeer op index 1 willen ophalen.
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); } }
Op het eerste gezicht lijkt het niet ingewikkeld. Je hoeft alleen de methode nog een keer te gebruiken. In de programmeertaal is het echter essentieel om hardcoding te vermijden.
Hardcoding is slecht, en het moet op alle mogelijke manieren worden vermeden. Hier volgt een voorbeeld met hardcoding, waarna we het samen zullen verbeteren:
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); } }
Zoals je kunt zien, is er sprake van hardcoding in de bovenstaande code. Bij het specificeren van de korting gebruiken we een los getal. We moeten deze korting in een variabele opslaan zodat we deze waarde later kunnen hergebruiken. Laten we de bovenstaande code verbeteren:
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); } }
Op deze manier verkrijgen we een variabele met de kortingswaarde, en in een groot programma in de toekomst hoeven we alleen de waarde van deze ene variabele aan te passen.
Als we deze hardcoded hadden, zouden we de waarde op elke plek moeten wijzigen, wat de tijd om de code te verbeteren of aan te passen aanzienlijk zou verhogen.
Samenvatting
Samenvattend kan worden gesteld dat in datastructuren verschillende typen gegevens, inclusief andere datastructuren, kunnen worden gebruikt. Dit voegt gemak toe aan het gebruik van deze datastructuren en flexibiliteit aan uw applicatie. Echter, men mag de algoritmische complexiteit niet vergeten, aangezien dit een cruciale parameter is bij het schrijven van een applicatie. Bij het gebruiken van datastructuren binnen andere datastructuren is het vrij eenvoudig om fouten te maken en de uitvoering van een specifieke bewerking aanzienlijk te compliceren.
Let hier goed op, en uw code zal uitstekend zijn!
1. Wat is de tijdcomplexiteit van een algoritme dat door een array van grootte n itereert en op elk element een bewerking met constante tijd uitvoert?
2. Wat is het belangrijkste nadeel van het hardcoden van waarden direct in de code?
3. Gegeven twee algoritmen met tijdcomplexiteiten O(n log n) en O(n^2), welke is over het algemeen efficiënter voor grote invoergroottes?
Bedankt voor je feedback!