Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Map med Andra Datastrukturer | Section
Grundläggande Datastrukturer i Java

Map med Andra Datastrukturer

Svep för att visa menyn

Generellt sett finns det inte mycket mer att säga om mappar. Det räcker att veta att det är en datastruktur som lagrar data baserat på nyckel-värde-principen. Men vad händer om du vill göra något annorlunda och skicka en datastruktur som en ArrayList som värde i mappen?

Att använda datastrukturer som värden i en map

Kanske får du för få kollisioner i hashmapen, och du kanske vill lagra data på ett ännu mer ovanligt sätt.

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

Här är ett exempel på att skapa en datastruktur som lagrar information om ett specifikt företag. Denna metod används ibland vid arbete med databaser, men det är lämpligt att inte överanvända den, eftersom hämtning av data från sådana datastrukturer kan vara utmanande. Anta till exempel att vi vill hämta marknadsförarenindex 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); } }

Vid första anblicken verkar det inte komplicerat. Du behöver bara använda metoden en gång till. Dock är det avgörande inom programmering att undvika hårdkodning.

Hårdkodning är dåligt, och det bör undvikas på alla sätt. Här är ett exempel med hårdkodning, som vi sedan kommer att förbättra tillsammans:

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 du kan se finns det hårdkodning i koden ovan. Vid specificering av rabatten används ett vanligt tal. Vi behöver lagra denna rabatt i en variabel så att vi kan återanvända värdet senare. Låt oss förbättra koden ovan:

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å detta sätt får vi en variabel med rabattvärdet, och i ett större program i framtiden skulle vi endast behöva ändra värdet på denna enda variabel.

Om vi hade hårdkodat det, skulle vi behöva ändra värdet vid varje förekomst, vilket avsevärt ökar tiden det tar att förbättra eller redigera koden.

Sammanfattning

Sammanfattningsvis kan det sägas att i datastrukturer kan olika typer av data, inklusive andra datastrukturer, användas. Detta tillför bekvämlighet vid användning av dessa datastrukturer och flexibilitet till din applikation. Dock bör man inte glömma bort algoritmisk komplexitet, eftersom det är en avgörande parameter vid utveckling av en applikation. Vid användning av datastrukturer inom andra datastrukturer kan det vara ganska lätt att göra misstag och avsevärt komplicera utförandet av en specifik operation.

Var uppmärksam på detta, så kommer din kod att vara utmärkt!

1. Vad är tidskomplexiteten för en algoritm som itererar genom en array av storlek n och utför en operation med konstant tid på varje element?

2. Vad är den största nackdelen med att hårdkoda värden direkt i koden?

3. Givet två algoritmer med tidskomplexiteterna O(n log n) och O(n^2), vilken är generellt mer effektiv för stora indata?

question mark

Vad är tidskomplexiteten för en algoritm som itererar genom en array av storlek n och utför en operation med konstant tid på varje element?

Vänligen välj det korrekta svaret

question mark

Vad är den största nackdelen med att hårdkoda värden direkt i koden?

Vänligen välj det korrekta svaret

question mark

Givet två algoritmer med tidskomplexiteterna O(n log n) och O(n^2), vilken är generellt mer effektiv för stora indata?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 16

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 1. Kapitel 16
some-alt