Hello there! In this lesson, we will apply Maps to real-world challenges. Our focus will be on solving tasks such as cataloging books in a library, counting votes in an election, and tracking inventories.
Real-World Scenarios Calling for Maps
Maps are beneficial in real-life applications, such as the ones mentioned above, due to their ability to rapidly retrieve data with unique keys and efficiently handle larger datasets. Let's understand their efficiency with some actual examples.
Solving Real-World Task 1: Cataloging Books in a Library
Solving Real-World Task 2: Counting Votes in an Election
Solving Real-World Task 3: Tracking Store Inventories
Lesson Summary and Practice
In this lesson, we bridged the gap between the theory of Maps and their practical applications in Kotlin. We explored real-world problems that can be solved using Maps and implemented Kotlin code to address them.
Now, get ready for hands-on practice exercises that will help reinforce these concepts and hone your Map problem-solving skills using Kotlin-specific syntax. Happy coding!
Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal
Suppose you're asked to manage the cataloging of books in a library. Here, the book ID serves as the key, while the details of the book, such as the title, author, and year of publication, are stored as values.
This approach allows us to add, search for, and remove books from our library catalog using just a few lines of Kotlin code.
fun main() { // Initializing a Map val libraryCatalog = mutableMapOf<String, MutableMap<String, String>>() // Details of a book val bookId = "123" // Creating a Map to store details of the book val bookDetails = mutableMapOf( "title" to "To Kill a Mockingbird", "author" to "Harper Lee", "year_published" to "1960" ) libraryCatalog[bookId] = bookDetails // Adding a book to library catalog // Searching for a book if (libraryCatalog.containsKey(bookId)) { val details = libraryCatalog[bookId] println("Title: ${details?.get("title")}, Author: ${details?.get("author")}, Year Published: ${details?.get("year_published")}") } libraryCatalog.remove(bookId) // Removing a book from the library}
As you can see, Maps make the task of cataloging books in the library simpler and more efficient!
Imagine a scenario in which we need to count votes in an election. We employ a Map, where each name is a unique key, and the frequency of that name serves as the associated value. Let's write some Kotlin code to better understand this.
fun main() { val votesList = listOf("Alice", "Bob", "Alice", "Charlie", "Bob", "Alice") // Cast votes val voteCounts = mutableMapOf<String, Int>() // Initializing a Map // Counting the votes for (name in votesList) { voteCounts[name] = voteCounts.getOrDefault(name, 0) + 1 } for ((key, value) in voteCounts) { println("$key: $value") } // Prints: Alice: 3, Bob: 2, Charlie: 1}
Maps facilitate the efficient counting of votes.
Finally, consider a task that involves managing a store's inventory. Here, we can use a Map in which product names are keys and quantities are values. This approach allows us to easily add new items, adjust the quantity of items, check whether an item is in stock, and much more.
fun main() { val storeInventory = mutableMapOf("Apples" to 100, "Bananas" to 80, "Oranges" to 90) // Initializing an inventory storeInventory["Pears"] = 50 // Adding a new product to inventory and setting its quantity storeInventory["Apples"] = storeInventory["Apples"]!! + 20 // Updating the number of apples in inventory var prod = "Apples" // A product to be checked println("Total $prod in stock: ${storeInventory[prod]}") // Check if a product is in stock prod = "Mangoes" if (prod in storeInventory) { // If mangoes exist in inventory println("$prod are in stock.") } else { // If mangoes don't exist in inventory println("$prod are out of stock.") }}
Thus, when managing inventory data, Maps offer an efficient solution!
Kotlin
fun main() { // Initializing a Map val libraryCatalog = mutableMapOf<String, MutableMap<String, String>>() // Details of a book val bookId = "123" // Creating a Map to store details of the book val bookDetails = mutableMapOf( "title" to "To Kill a Mockingbird", "author" to "Harper Lee", "year_published" to "1960" ) libraryCatalog[bookId] = bookDetails // Adding a book to library catalog // Searching for a book if (libraryCatalog.containsKey(bookId)) { val details = libraryCatalog[bookId] println("Title: ${details?.get("title")}, Author: ${details?.get("author")}, Year Published: ${details?.get("year_published")}") } libraryCatalog.remove(bookId) // Removing a book from the library}
Kotlin
fun main() { val votesList = listOf("Alice", "Bob", "Alice", "Charlie", "Bob", "Alice") // Cast votes val voteCounts = mutableMapOf<String, Int>() // Initializing a Map // Counting the votes for (name in votesList) { voteCounts[name] = voteCounts.getOrDefault(name, 0) + 1 } for ((key, value) in voteCounts) { println("$key: $value") } // Prints: Alice: 3, Bob: 2, Charlie: 1}
Kotlin
fun main() { val storeInventory = mutableMapOf("Apples" to 100, "Bananas" to 80, "Oranges" to 90) // Initializing an inventory storeInventory["Pears"] = 50 // Adding a new product to inventory and setting its quantity storeInventory["Apples"] = storeInventory["Apples"]!! + 20 // Updating the number of apples in inventory var prod = "Apples" // A product to be checked println("Total $prod in stock: ${storeInventory[prod]}") // Check if a product is in stock prod = "Mangoes" if (prod in storeInventory) { // If mangoes exist in inventory println("$prod are in stock.") } else { // If mangoes don't exist in inventory println("$prod are out of stock.") }}