| Refresh | Home EGTry.com

sort key set of map according its values


package collection.sort;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;



public class MapSorting {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Map<String, Integer> worldEconomy=new HashMap<String, Integer>();
		worldEconomy.put("US", 14624184); // million
		worldEconomy.put("Germany", 3305898);
		worldEconomy.put("Japan", 5390897);
		worldEconomy.put("China", 	5745133);


		List<String> list=new ArrayList(worldEconomy.keySet());

		EconomyComparator comparator=new EconomyComparator(worldEconomy);
		Collections.sort(list, comparator);
		System.out.println(list); //[US, China, Japan, Germany]

		
	}

	
	private static class EconomyComparator implements Comparator<String> {
		private Map<String, Integer> economy;
		
		public EconomyComparator(Map<String, Integer> economy) {
			this.economy=economy;
		}
		@Override
		public int compare(String country1, String country2) {
			return economy.get(country2) - economy.get(country1); //reverse order, biggest first
		}


		
	}
}