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 | Behärska Map i Java
Java Datastrukturer

bookMap Med Andra Datastrukturer

Generellt finns det inte mycket mer att säga om mappar. Informationen att det är en datastruktur som lagrar data baserat på nyckel-värde-principen är tillräcklig. 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 speciellt sätt.

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

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. Antag till exempel att vi vill hämta marknadsförarenindex 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); } }

Vid första anblicken verkar det inte komplicerat. Det krävs bara att använda metoden en gång till. Dock är det viktigt inom programmering att undvika hårdkodning.

Hårdkodning är olämpligt och 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

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 kan se finns det hårdkodning i koden ovan. Vid specificering av rabatten används ett vanligt tal. Vi behöver spara 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

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å detta sätt erhålls en variabel med rabattvärdet, och i ett större program i framtiden skulle man 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 skulle avsevärt öka 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, då detta är en avgörande parameter vid utveckling av en applikation. Vid användning av datastrukturer inom andra datastrukturer är det lätt att göra misstag och avsevärt komplicera utförandet av en specifik operation.

Var uppmärksam på detta, så blir din kod 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?

Select the correct answer

question mark

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

Select the correct answer

question mark

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

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 4

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

bookMap Med Andra Datastrukturer

Svep för att visa menyn

Generellt finns det inte mycket mer att säga om mappar. Informationen att det är en datastruktur som lagrar data baserat på nyckel-värde-principen är tillräcklig. 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 speciellt sätt.

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

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. Antag till exempel att vi vill hämta marknadsförarenindex 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); } }

Vid första anblicken verkar det inte komplicerat. Det krävs bara att använda metoden en gång till. Dock är det viktigt inom programmering att undvika hårdkodning.

Hårdkodning är olämpligt och 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

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 kan se finns det hårdkodning i koden ovan. Vid specificering av rabatten används ett vanligt tal. Vi behöver spara 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

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å detta sätt erhålls en variabel med rabattvärdet, och i ett större program i framtiden skulle man 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 skulle avsevärt öka 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, då detta är en avgörande parameter vid utveckling av en applikation. Vid användning av datastrukturer inom andra datastrukturer är det lätt att göra misstag och avsevärt komplicera utförandet av en specifik operation.

Var uppmärksam på detta, så blir din kod 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?

Select the correct answer

question mark

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

Select the correct answer

question mark

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

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 4
some-alt