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

Dart

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

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

スポンサーリンク

方法

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

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

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

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

//mapを値でソート
var sortedValue = new SplayTreeMap.from(map, (key1, key2) => map[key1].compareTo(map[key2]));

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

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

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

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

import 'dart:collection';

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

使用例

import 'dart:collection';

void main() {

  var map = {
    'Two' : 2,
    'Four' : 4,
    'Three' : 3,
    'Five' :  5,
    'One' : 1,
    
  };
  
  var sortedValue = SplayTreeMap<String, int>.from(map, (key1, key2) => map[key1]!.compareTo(map[key2]!));
  
  print(sortedValue); //{One: 1, Two: 2, Three: 3, Four: 4, Five: 5}
}

コメント

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