 <p>Have you looked into the Comparable interface? You will need to wrap the Map&lt;String,String> inside a new class that has a comparable() method in order to make it sortable. More info here: <a href="https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_comparable.htm" rel="nofollow">https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_comparable.htm</a></p> <pre><code>public class MapWrapper implements Comparable { public Map&lt;String,String&gt; record; public MapWrapper(Map&lt;String,String&gt; record) { this.record = record; } public Integer compareTo(Object compareTo) { MapWrapper compareToMap = (MapWrapper)compareTo; if (record.get('Savings') == compareToMap.record.get('Savings')) return 0; if (record.get('Savings') &gt; compareToMap.record.get('Savings')) return 1; return -1; } } </code></pre> <p>Your list will contain MapWrapper objects instead of Map&lt;String,String>. You can then sort it using List.sort():</p> <pre><code>List&lt;MapWrapper&gt; myList = new MapWrapper[]{}; myList.add(new MapWrapper(new Map&lt;String,String&gt;{'Name'=&gt;'John','Savings'=&gt;'300'})); myList.add(new MapWrapper(new Map&lt;String,String&gt;{'Name'=&gt;'David','Savings'=&gt;'100'})); System.debug(myList); //Unsorted myList.sort(); System.debug(myList); //Sorted </code></pre> <p>If you need to keep your structure as a <code>List&lt;Map&lt;String,String&gt;&gt;</code> without the wrapper, you can still do it but you will need to implement the sort algorithm yourself. The easiest way to do it is using bubble sort. </p>