Java:
Використання асоціативних масивів
Як використовувати:
Java не має вбудованих асоціативних масивів, як деякі мови, але надає інтерфейс Map
та класи, такі як HashMap
і TreeMap
, для виконання цієї ролі. Ось як використовувати HashMap
:
import java.util.HashMap;
import java.util.Map;
public class LearnMaps {
public static void main(String[] args) {
// Створення HashMap
Map<String, Integer> ageOfFriends = new HashMap<>();
// Додавання елементів
ageOfFriends.put("Alice", 24);
ageOfFriends.put("Bob", 30);
ageOfFriends.put("Charlie", 28);
// Доступ до елементів
System.out.println("Вік Аліси: " + ageOfFriends.get("Alice"));
// Обробка неіснуючих ключів
System.out.println("Вік когось, хто не в мапі: " + ageOfFriends.getOrDefault("Dan", -1));
// Ітерація по елементам
for (Map.Entry<String, Integer> entry : ageOfFriends.entrySet()) {
System.out.println(entry.getKey() + " має " + entry.getValue() + " років.");
}
}
}
Приклад виводу:
Вік Аліси: 24
Вік когось, хто не в мапі: -1
Аліса має 24 роки.
Боб має 30 років.
Чарлі має 28 років.
HashMap
- це лише одна з реалізацій. Якщо ваші ключі унікальні і вам потрібно, щоб вони були впорядкованими, розгляньте TreeMap
. Для мапи, яка зберігає порядок вставки, LinkedHashMap
буде вашим другом.
Поглиблено
Мапи в Java є частиною Collections Framework, введеної у JDK 1.2, але зазнали значних поліпшень протягом років, включаючи введення методу forEach
в Java 8 для легшої ітерації по елементах. Вибір реалізації мапи (HashMap
, LinkedHashMap
, TreeMap
) має керуватися вашими конкретними потребами з точки зору упорядкування та продуктивності. Наприклад, HashMap
пропонує часову ефективність O(1) для основних операцій (get та put), припускаючи, що хеш-функція розподіляє елементи належним чином серед кошиків. Однак, якщо вам потрібне сортування на основі природного порядку або кастомних компараторів, TreeMap
є тим, до кого слід звертатися, надаючи час O(log n) для вставки та пошуку.
Перед тим, як був інтродукований Map
, асоціативні масиви зазвичай реалізовувалися за допомогою двох паралельних масивів (один для ключів, інший для значень) або власних структур даних з меншою ефективністю. Поточні альтернативи до Map
та його реалізацій можуть включати сторонні бібліотеки, які пропонують спеціалізовані мапи, як-от двонаправлені мапи (BiMap в бібліотеці Google’s Guava) для випадків, коли вам потрібно ефективно знайти ключ за його значенням. Однак, для більшості випадків використання в Java, мапи стандартної бібліотеки є надійними та гнучкими достатньо, щоб впоратися з завданням.