[Dart]Map(マップ)をキーでソートするには?

Dart

どうも、ちょげ(@chogetarou)です。

DartでMapをキーでソートする方法を紹介します。

スポンサーリンク

方法

コンピューター, ノート, オフィス, コード, プログラミング, プログラム

Mapをキーでソートするには、SplayTreeMapを使います。

具体的には、SplayTreeMapをfromでインスタンス化します。

fromの第1引数にはソートするMap、第2引数にはcompareToを使った比較式を指定します。

//mapをキーでソート
var sortedKey = new SplayTreeMap.from(map, (key1, key2) => key1.compareTo(key2));

SplayTreeMapには、ソートされたマップが格納されます。

SplayTreeMapは、キーに順番が存在するマップです。

Mapには順番がないのでソートできませんが、SplayTreeMapには順番があるのでソートできます。

また、SplayTreeMapを使うには、collectionをインポートする必要があります。

import 'dart:collection';

fromの第2引数のcompareToを使った条件式によって、ソートのされ方が決まります。

使用例

import 'dart:collection';

void main() {
  
  var numbers = {
    3 : 'Three',
    1 : 'One',
    5 : 'Five',
    2 : 'Two',
    4 : 'Four'
  };
  
  var sortedKey = new SplayTreeMap<int, String>.from(numbers, (key1, key2) => key1.compareTo(key2));
  
  print(sortedKey); //{1: One, 2: Two, 3: Three, 4: Four, 5: Five}
}

コメント

タイトルとURLをコピーしました