Map з Іншими Структурами Даних
Загалом, немає багато чого додати про мапи. Достатньо знати, що це структура даних, яка зберігає інформацію за принципом ключ-значення. Але що, якщо ви хочете спробувати дещо цікавіше і передати таку структуру даних, як ArrayList, як значення у мапі?
Передача структур даних як значень у мапі
Можливо, у вас буде занадто мало колізій у 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. Яка часовá складність алгоритму, що ітерує масив розміру n та виконує операцію з постійним часом для кожного елемента?
2. Який основний недолік жорсткого закріплення значень безпосередньо в коді?
3. Який з двох алгоритмів із часовими складностями O(n log n) та O(n^2) зазвичай є ефективнішим для великих розмірів вхідних даних?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Чудово!
Completion показник покращився до 4
Map з Іншими Структурами Даних
Свайпніть щоб показати меню
Загалом, немає багато чого додати про мапи. Достатньо знати, що це структура даних, яка зберігає інформацію за принципом ключ-значення. Але що, якщо ви хочете спробувати дещо цікавіше і передати таку структуру даних, як ArrayList, як значення у мапі?
Передача структур даних як значень у мапі
Можливо, у вас буде занадто мало колізій у 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. Яка часовá складність алгоритму, що ітерує масив розміру n та виконує операцію з постійним часом для кожного елемента?
2. Який основний недолік жорсткого закріплення значень безпосередньо в коді?
3. Який з двох алгоритмів із часовими складностями O(n log n) та O(n^2) зазвичай є ефективнішим для великих розмірів вхідних даних?
Дякуємо за ваш відгук!