title: Sort List of HashMaps based on hashMap values [not keys]
body: <p>Here is what I have- </p>
  
  <p>How I can include multiple keys and their values in comparison? Right now I am only using employeeId but I wanted to include departmentId and other in my comparison for sorting...</p>
  
  <pre><code>import java.util.ArrayList;
  import java.util.Collections;
  import java.util.Comparator;
  import java.util.Date;
  import java.util.HashMap;
  import java.util.List;
  
  public class Tester {
  
      boolean flag = false ;
  
  
      public static void main(String args[]) {
          Tester tester = new Tester() ;
          tester.printValues() ;
      }
  
      public void printValues ()
      {
  
          List&lt;HashMap&lt;String,Object&gt;&gt; list = new ArrayList&lt;HashMap&lt;String,Object&gt;&gt;() ;
          HashMap&lt;String,Object&gt; map = new HashMap&lt;String,Object&gt;();
  
  
          map = new HashMap&lt;String,Object&gt;();
          map.put("employeeId", new Integer(1234)) ;
          map.put("departmentId", new Integer(110)) ;
          map.put("someFlag", "B") ;
          map.put("eventTypeId", new Integer(11)) ;
          map.put("startDate", new Date() ) ;
          map.put("endDate", new Date() ) ;
          list.add(map);
  
  
          map = new HashMap&lt;String,Object&gt;();
          map.put("employeeId", new Integer(456)) ;
          map.put("departmentId", new Integer(100)) ;
          map.put("someFlag", "B") ;
          map.put("eventTypeId", new Integer(11)) ;
          map.put("startDate", new Date() ) ;
          map.put("endDate", new Date() ) ;
          list.add(map);
  
  
          map = new HashMap&lt;String,Object&gt;();
          map.put("employeeId", new Integer(1234)) ;
          map.put("departmentId", new Integer(10)) ;
          map.put("someFlag", "B") ;
          map.put("eventTypeId", new Integer(17)) ;
          map.put("startDate", new Date() ) ;
          map.put("endDate", new Date() ) ;
          list.add(map);
  
          map = new HashMap&lt;String,Object&gt;();
          map.put("employeeId", new Integer(1234)) ;
          map.put("departmentId", new Integer(99)) ;
          map.put("someFlag", "B") ;
          map.put("eventTypeId", new Integer(11)) ;
          map.put("startDate", new Date() ) ;
          map.put("endDate", new Date() ) ;
          list.add(map);
  
          map = new HashMap&lt;String,Object&gt;();
          map.put("employeeId", new Integer(1234)) ;
          map.put("departmentId", new Integer(100)) ;
          map.put("someFlag", "B") ;
          map.put("eventTypeId", new Integer(11)) ;
          map.put("startDate", new Date() ) ;
          map.put("endDate", new Date() ) ;
          list.add(map);
  
  
  
          map = new HashMap&lt;String,Object&gt;();
          map.put("employeeId", new Integer(567)) ;
          map.put("departmentId", new Integer(200)) ;
          map.put("someFlag", "P") ;
          map.put("eventTypeId", new Integer(12)) ;
          map.put("startDate", new Date()  ) ;
          map.put("endDate", new Date() ) ;
          list.add(map);
  
          Collections.sort ( list , new HashMapComparator2 () ) ;
  
          for( int i = 0 ; i &lt; list.size() ; i ++ ) {
              System.out.println(list.get(i));    
          }
  
          System.out.println("======================================");    
  
  
          flag = true ; // desc
          Collections.sort ( list , new HashMapComparator2 () ) ;
  
          for( int i = 0 ; i &lt; list.size() ; i ++ ) {
              System.out.println(list.get(i));    
          }
  
      }
  
      public class HashMapComparator2 implements Comparator
      {
          public int compare ( Object object1 , Object object2 )
          {
              if ( flag == false )
              {
  
  
                  Integer obj1Value = ( Integer ) ( ( HashMap ) object1 ).get ( "employeeId" ) ;
                  Integer obj2Value = ( Integer ) ( ( HashMap ) object2 ).get ( "employeeId" ) ;
  
                  return obj1Value.compareTo ( obj2Value ) ;
              }
              else
              {
                  Integer obj1Value = ( Integer ) ( ( HashMap ) object1 ).get ( "employeeId" ) ;
                  Integer obj2Value = ( Integer ) ( ( HashMap ) object2 ).get ( "employeeId" ) ;
  
                  return obj2Value.compareTo ( obj1Value ) ;
              }
          }
      }
  
  
  }
  </code></pre>