Return to Snippet

Revision: 3095
at June 3, 2007 12:33 by thebugslayer

Initial Code
import java.util.*;

// Groovy version of "Sort keys by values" is:
//    keys.sort{ lang[it] }
// That's one line replacement!!!

class MapSort {
	public static void main(String[] args){
		Map lang = new HashMap();
		lang.put(0, "Java");
		lang.put(1, "Groovy");
		lang.put(2, "Ruby");
		lang.put(3, "Python");
		lang.put(4, "C#");
		lang.put(5, "C++");
		lang.put(6, "Perl");
		List keys = new ArrayList(lang.keySet());
		//Sort keys by values.
		final Map langForComp = lang;
			new Comparator(){
				public int compare(Object left, Object right){
					Integer leftKey = (Integer)left;
					Integer rightKey = (Integer)right;
					String leftValue = (String)langForComp.get(leftKey);
					String rightValue = (String)langForComp.get(rightKey);
					return leftValue.compareTo(rightValue);
		//List the key value
		for(Iterator i=keys.iterator(); i.hasNext();){
			Object k =;
			System.out.println(k + " " + lang.get(k));

Initial URL

Initial Description
This demonstrate the expressiveness of Groovy vs Java.

Initial Title
Sorting map keys by comparing it's values

Initial Tags

Initial Language