Map 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
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); } }
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öraren på index 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); } }
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
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 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
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å 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?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Can you give an example of how to store an ArrayList as a value in a map?
What are some best practices to avoid hardcoding in such scenarios?
Can you explain more about the potential challenges of retrieving data from nested data structures?
Fantastiskt!
Completion betyg förbättrat till 4
Map 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
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); } }
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öraren på index 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); } }
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
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 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
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å 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?
Tack för dina kommentarer!