Использование ассоциативных массивов

Dart:
Использование ассоциативных массивов

Как:

Dart предлагает простой синтаксис для создания и манипулирования Map. Ниже приведены примеры, демонстрирующие базовые операции, такие как создание, добавление элементов и получение значений.

void main() {
  // Создание карты
  var fruitColors = {
    'apple': 'red',
    'banana': 'yellow',
    'grape': 'purple'
  };

  // Добавление новой пары ключ-значение
  fruitColors['orange'] = 'orange';

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

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

  // Итерация по Map
  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 и его динамичная экосистема ловко обращаются с ассоциативными массивами для более сложной манипуляции данными.