Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Map з іншими структурами даних | Section
Фундаментальні структури даних у Java

Map з іншими структурами даних

Свайпніть щоб показати меню

Загалом, немає багато додаткової інформації про відображення (map). Достатньо знати, що це структура даних, яка зберігає дані за принципом ключ-значення. Але що робити, якщо виникає бажання поекспериментувати і передати таку структуру даних, як ArrayList, у якості значення у map?

Передача структур даних як значень у Map

Можливо, у вас буде занадто мало колізій у hashmap, і ви захочете зберігати дані ще більш незвичним способом.

Main.java

Main.java

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

Ось приклад створення структури даних, яка зберігає інформацію про певну компанію. Такий підхід іноді використовується при роботі з базами даних, але не рекомендується зловживати ним, оскільки отримання даних з подібних структур даних може бути складним. Наприклад, припустимо, що потрібно отримати маркетолога за індексом 1.

Main.java

Main.java

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

На перший погляд, це не здається складним. Потрібно лише ще раз використати метод. Однак у програмуванні важливо уникати жорсткого кодування.

Жорстке кодування — це погано, і його слід уникати будь-яким чином. Давайте розглянемо приклад із жорстким кодуванням, а потім разом виправимо його:

Main.java

Main.java

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

Як видно, у наведеному вище коді присутнє жорстке кодування. При заданні знижки використовується звичайне число. Необхідно зберегти цю знижку у змінній, щоб повторно використовувати це значення пізніше. Давайте покращимо наведений вище код:

Main.java

Main.java

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

Таким чином, отримуємо змінну зі значенням знижки, і в великій програмі в майбутньому потрібно буде змінити значення лише цієї однієї змінної.

Якби ми жорстко закодували це значення, довелося б змінювати його у кожному випадку, що суттєво збільшує час на вдосконалення чи редагування коду.

Підсумок

Підсумовуючи, можна сказати, що у структурах даних можна використовувати різні типи даних, включаючи інші структури даних. Це додає зручності у використанні цих структур даних та гнучкості вашому застосунку. Однак, не слід забувати про алгоритмічну складність, оскільки це важливий параметр при написанні застосунку. При використанні структур даних у межах інших структур даних досить легко припуститися помилки та суттєво ускладнити виконання певної операції.

Звертайте на це увагу, і ваш код буде відмінним!

1. Яка часовa складність алгоритму, що ітерує масив розміру n та виконує операцію з постійним часом для кожного елемента?

2. Який основний недолік жорсткого закріплення значень безпосередньо у коді?

3. Який з двох алгоритмів зі складностями O(n log n) та O(n^2) зазвичай є ефективнішим для великих розмірів вхідних даних?

question mark

Яка часовa складність алгоритму, що ітерує масив розміру n та виконує операцію з постійним часом для кожного елемента?

Виберіть правильну відповідь

question mark

Який основний недолік жорсткого закріплення значень безпосередньо у коді?

Виберіть правильну відповідь

question mark

Який з двох алгоритмів зі складностями O(n log n) та O(n^2) зазвичай є ефективнішим для великих розмірів вхідних даних?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 16

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 1. Розділ 16
some-alt