Використання асоціативних масивів

Dart:
Використання асоціативних масивів

Як це зробити:

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

void main() {
  // Створення мапи
  var fruitColors = {
    'apple': 'red',
    'banana': 'yellow',
    'grape': 'purple'
  };

  // Додавання нової пари ключ-значення
  fruitColors['orange'] = 'orange';

  // Доступ до значення за його ключем
  print(fruitColors['apple']); // Вивід: red

  // Оновлення значення
  fruitColors['banana'] = 'green';

  // Ітерація по Мапі
  fruitColors.forEach((fruit, color) {
    print('$fruit: $color');
  });
  // Приклад виводу:
  // apple: red
  // banana: green
  // grape: purple
  // orange: orange
}

Для роботи зі складними структурами даних або розширення функціональності, програмісти Dart часто покладаються на додаткові бібліотеки. Однією з таких бібліотек є collection, яка надає розширені типи колекцій та утиліти. Хоча collection не змінює основних принципів роботи з Мапами, вона збагачує їх утилітами та більш складними типами колекцій. Ось як ви можете її використати для більш конкретного завдання, як-от сортування Мапи за її значеннями:

Спочатку, переконайтеся, що пакет collection включений до вашого файлу pubspec.yaml:

dependencies:
  collection: ^1.15.0

Потім, ви можете використовувати її наступним чином:

import 'package:collection/collection.dart';

void main() {
  var fruitColors = {
    'apple': 'red',
    'banana': 'yellow',
    'grape': 'purple',
    'orange': 'orange'
  };

  // Сортування Мапи за її значеннями (кольорами)
  var sortedFruitsByColor = SplayTreeMap.from(
    fruitColors,
    (key1, key2) => fruitColors[key1]!.compareTo(fruitColors[key2]!)
  );

  print(sortedFruitsByColor);
  // Вивід:
  // {orange: orange, apple: red, banana: yellow, grape: purple}
}

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