# Dart/Flutter – Sort Map by Key/Value

In this tutorial, I will show you way to Sort Map in Dart/Flutter. You will know how to:

• Sort Map by Key
• Sort Map by Value
• Sort Map by Key using SplayTreeMap
• Sort Map by Value using SplayTreeMap

## Dart/Flutter Sort Map by Key

We can sort a Map by Key with following steps:

• get all Entries of the Map using `entries` property
• convert the Entries into a List with toList() method
• sort the List using sort() method and compare function (for entries’ keys)
• convert the sorted List into Map with fromEntries() method
``````Map map = {3: 'three', 1: 'one', 4: 'four', 5: 'five', 2: 'two'};

var sortedByKeyMap = Map.fromEntries(
map.entries.toList()..sort((e1, e2) => e1.key.compareTo(e2.key)));

print(sortedByKeyMap);
``````

Output:

``````{1: one, 2: two, 3: three, 4: four, 5: five}
``````

## Dart/Flutter Sort Map by Value

We can sort a Map by Value with following steps:

• get all Entries of the Map using `entries` property
• convert the Entries into a List with toList() method
• sort the List using sort() method and compare function (for entries’ values)
• convert the sorted List into Map with fromEntries() method
``````Map map = {3: 'three', 1: 'one', 4: 'four', 5: 'five', 2: 'two'};

var sortedByValueMap = Map.fromEntries(
map.entries.toList()..sort((e1, e2) => e1.value.compareTo(e2.value)));

print(sortedByValueMap);
``````

Output:

``````{5: five, 4: four, 1: one, 3: three, 2: two}
``````

## SplayTreeMap

We can use the SplayTreeMap to sort a Map. A `SplayTreeMap` is a type of map which is based on a self-balancing binary tree, it automatically iterates keys in a sorted order.

Keys will be compared (for ordering) using the compare function passed in the constructor or `from()` method. If we don’t specify the compare function, the objects are assumed to be Comparable, and are compared using `Comparable.compareTo()` method.

``````Map map = {3: 'three', 1: 'one', 4: 'four', 5: 'five', 2: 'two'};

var sortedByKeyMap =
new SplayTreeMap<int, String>.from(map, (k1, k2) => k1.compareTo(k2));

/* same result */
// sortedByKeyMap = new SplayTreeMap<int, String>.from(map);

print(sortedByKeyMap);
``````

Output:

``````{1: one, 2: two, 3: three, 4: four, 5: five}
``````

If you want to use `SplayTreeMap` to a Map by Value, just change the compare function.

``````Map map = {3: 'three', 1: 'one', 4: 'four', 5: 'five', 2: 'two'};

var sortedByValueMap = new SplayTreeMap<int, String>.from(
map, (k1, k2) => map[k1].compareTo(map[k2]));

print(sortedByValueMap);
``````

Output:

``````{5: five, 4: four, 1: one, 3: three, 2: two}
``````

## Conclusion

Today we’ve known how to sort a Map in Dart/Flutter by key or by value.

There are many interesting things about Dart List and Map, please visit:
Dart/Flutter List Tutorial with Examples
Dart/Flutter Map Tutorial with Examples
Dart/Flutter – Sort list of Objects

Happy Learning! See you again.