Dart:
Usando arrays associativos

Como:

Dart oferece uma sintaxe simples para criar e manipular Maps. Abaixo estão exemplos demonstrando operações básicas como criação, adição de elementos e busca de valores.

void main() {
  // Criando um map
  var fruitColors = {
    'apple': 'red',
    'banana': 'yellow',
    'grape': 'purple'
  };

  // Adicionando um novo par chave-valor
  fruitColors['orange'] = 'orange';

  // Acessando um valor pela sua chave
  print(fruitColors['apple']); // Saída: red

  // Atualizando um valor
  fruitColors['banana'] = 'green';

  // Iterando sobre o Map
  fruitColors.forEach((fruit, color) {
    print('$fruit: $color');
  });
  // Saída Exemplar:
  // apple: red
  // banana: green
  // grape: purple
  // orange: orange
}

Para estruturas de dados complexas ou funcionalidades estendidas, programadores Dart frequentemente contam com bibliotecas adicionais. Uma dessas bibliotecas é collection, que fornece tipos de coleções avançados e utilidades. Embora collection não modifique a forma básica como os Maps são manipulados, ela os enriquece com funções de utilidade e tipos de coleção mais sofisticados. Veja como você poderia usá-la para uma tarefa mais específica, como ordenar um Map pelos seus valores:

Primeiro, assegure que o pacote collection está incluído no seu arquivo pubspec.yaml:

dependencies:
  collection: ^1.15.0

Então, você pode usá-lo da seguinte forma:

import 'package:collection/collection.dart';

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

  // Ordenando o Map pelos seus valores (cores)
  var sortedFruitsByColor = SplayTreeMap.from(
    fruitColors,
    (key1, key2) => fruitColors[key1]!.compareTo(fruitColors[key2]!)
  );

  print(sortedFruitsByColor);
  // Saída:
  // {orange: orange, apple: red, banana: yellow, grape: purple}
}

Este exemplo demonstra a ordenação das entradas de um Map baseada em seus valores, mostrando como Dart e seu ecossistema vibrante podem manejar de forma ágil arrays associativos para manipulação de dados mais sofisticada.