Wednesday 4 December 2013

Collections Sort a HashMap Based On Values Java

Hi Viewers  I'm going to give you an example to sort an unsorted HashMap using Comparator in java.
Comparator can be used to sort the classes that implement sorted maps and sorted sets .As per the java docs we can pass Comparator ,map or sorted map . So here in below code snippet we pass object of class to TreeMap's constructor in which we implemented Comparator . It then creates a new TreeMap which is sorted as per Comparator ans displays the desired result.
Below is the code snippet that gives a clear example of how to sort HashMap based on its value objects
  
import java.util.Comparator;
import java.util.HashMap;
import java.util.TreeMap;

public class SortHashMap {
 public SortHashMap() {
  
 }
 public static void main(String args[]){
  HashMap<String,String> mp=new HashMap<String,String>();
  mp.put("1","America");
  mp.put("2", "Florida");
  mp.put("3", "England");
  mp.put("4", "Dallas");
  CheckComparator cc=new CheckComparator(mp);
  TreeMap<String,String> tm=new TreeMap<String,String>(cc);
  tm.putAll(mp);
  System.out.println(tm);
 
 }
}
class CheckComparator implements Comparator{
 private HashMap<String, String> mp;

 public CheckComparator(HashMap<String, String> mp) {
  this.mp=mp;
 }

 @Override
 public int compare(Object o1, Object o2) {
  if(mp.get(o1).toString().compareTo(mp.get(o2).toString())>0){
   return 1;  
  }else if(mp.get(o1).toString().compareTo(mp.get(o2).toString()<0){
  return -1;
  }else{
   return 0;
  }
}
Output:
{1=America, 4=Dallas, 3=England, 2=Florida}

No comments:

Post a Comment