# Dart: Sorting Entries of a Map by Its Values

Imagine your boss gives you a Dart map like so:

``````final Map<String, int> myMap = {
'a': 10,
'b': 20,
'c': 15,
'd': 5,
'e': 14
};``````

And then, he asks you to sort the map in the ascending/descending order of the map’s values. How do you solve this problem to make him happy? Well, the solution is quite simple. Let’s see the two examples below.

## Sorting the map in ascending order of its values

The code:

``````// KindaCode.com
void main() {
final Map<String, int> myMap = {'a': 10, 'b': 20, 'c': 15, 'd': 5, 'e': 14};

// sort the map in the ascending order of values

// turn the map into a list of entries
List<MapEntry<String, int>> mapEntries = myMap.entries.toList();

// sort the list
mapEntries.sort((a, b) => a.value.compareTo(b.value));

// turn the list back into a map
final Map<String, int> sortedMapAsc = Map.fromEntries(mapEntries);

// print the result
print(sortedMapAsc);
}``````

Output:

``{d: 5, a: 10, e: 14, c: 15, b: 20}``

## Sorting the map in descending order of its values

The code is almost the same as the preceding example except that we change this line:

``mapEntries.sort((a, b) => a.value.compareTo(b.value));``

To this:

``mapEntries.sort((a, b) => b.value.compareTo(a.value));``

Here’s the full code:

``````// KindaCode.com
void main() {
final Map<String, int> myMap = {'a': 10, 'b': 20, 'c': 15, 'd': 5, 'e': 14};

// sort the map in the ascending order of values

// turn the map into a list of entries
List<MapEntry<String, int>> mapEntries = myMap.entries.toList();

// sort the list in descending order of values
mapEntries.sort((a, b) => b.value.compareTo(a.value));

// turn the list back into a map
final Map<String, int> sortedMapAsc = Map.fromEntries(mapEntries);

// print the result
print(sortedMapAsc);
}``````

Output:

``{b: 20, c: 15, e: 14, a: 10, d: 5}`` 