Map з іншими структурами даних
Свайпніть щоб показати меню
Загалом, немає багато додаткової інформації про відображення (map). Достатньо знати, що це структура даних, яка зберігає дані за принципом ключ-значення. Але що робити, якщо виникає бажання поекспериментувати і передати таку структуру даних, як ArrayList, у якості значення у map?
Передача структур даних як значень у Map
Можливо, у вас буде занадто мало колізій у hashmap, і ви захочете зберігати дані ще більш незвичним способом.
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); } }
Ось приклад створення структури даних, яка зберігає інформацію про певну компанію. Такий підхід іноді використовується при роботі з базами даних, але не рекомендується зловживати ним, оскільки отримання даних з подібних структур даних може бути складним. Наприклад, припустимо, що потрібно отримати маркетолога за індексом 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); } }
На перший погляд, це не здається складним. Потрібно лише ще раз використати метод. Однак у програмуванні важливо уникати жорсткого кодування.
Жорстке кодування — це погано, і його слід уникати будь-яким чином. Давайте розглянемо приклад із жорстким кодуванням, а потім разом виправимо його:
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); } }
Як видно, у наведеному вище коді присутнє жорстке кодування. При заданні знижки використовується звичайне число. Необхідно зберегти цю знижку у змінній, щоб повторно використовувати це значення пізніше. Давайте покращимо наведений вище код:
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); } }
Таким чином, отримуємо змінну зі значенням знижки, і в великій програмі в майбутньому потрібно буде змінити значення лише цієї однієї змінної.
Якби ми жорстко закодували це значення, довелося б змінювати його у кожному випадку, що суттєво збільшує час на вдосконалення чи редагування коду.
Підсумок
Підсумовуючи, можна сказати, що у структурах даних можна використовувати різні типи даних, включаючи інші структури даних. Це додає зручності у використанні цих структур даних та гнучкості вашому застосунку. Однак, не слід забувати про алгоритмічну складність, оскільки це важливий параметр при написанні застосунку. При використанні структур даних у межах інших структур даних досить легко припуститися помилки та суттєво ускладнити виконання певної операції.
Звертайте на це увагу, і ваш код буде відмінним!
1. Яка часовa складність алгоритму, що ітерує масив розміру n та виконує операцію з постійним часом для кожного елемента?
2. Який основний недолік жорсткого закріплення значень безпосередньо у коді?
3. Який з двох алгоритмів зі складностями O(n log n) та O(n^2) зазвичай є ефективнішим для великих розмірів вхідних даних?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат