Dart Mapをキーでソートする

Dart Mapをキーでソートする

Dartで、Mapをキーでソートするコードを記述してます。Mapは「sort」メソッドがないので、キーを順番にイテレートしてくれる「SplayTreeMap」にMapを追加することでで可能です。

環境

  • OS windows11 home
  • Dart 2.18.4

Mapをキーでソート

Mapをキーでソートするには、
1. 「dart:collection」のキーを順番にイテレートする「SplayTreeMap」を生成
2. 「addAll」で生成した「SplayTreeMap」に追加
することで可能です。

「SplayTreeMap」使用例

import 'dart:collection';

void main() {
  var map = SplayTreeMap();

  map[3] = 'ccc';
  map[2] = 'bbb';
  map[1] = 'aaa';
  map[4] = 'ddd';

  map.forEach((k, v) => print('$k: $v'));
  // 1: aaa
  // 2: bbb
  // 3: ccc
  // 4: ddd
}

実際に、使用して追加してみます。

import 'dart:collection';

void main() {
  var map1 = SplayTreeMap();
  var map2 = <int, String>{
    2: 'ccc',
    0: 'aaa',
    1: 'bbb',
  };
  map1.addAll(map2);
  print(map1); // {0: aaa, 1: bbb, 2: ccc}
}

実行結果を見ると、「map2」がソートされていることが確認できます。