Search code examples
javasortingarraylisthashmap

java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.Comparable


I was trying to sort my ArrayList.

java.util.ArrayList arList= new java.util.ArrayList();  
   arList=getList();    
   java.util.Collections.sort(arList);

where my getList() function here

public ArrayList getList() throws Exception
{
ArrayList listItems = new ArrayList();
//Query executing here..............!
            while (rs.next()) 
                {
                HashMap hashList = new HashMap();
                hashList.put("name",rs.getString(1));
                hashList.put("id",rs.getBigDecimal(2));
                listItems.add(hashList);
                }
          return listItems;
}

But I am facing error :java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.Comparable


Solution

  • First Thing -

    java.util.ArrayList arList= new java.util.ArrayList();  
    arList=getList();    
    

    You create the first instance unnecessary.

    Second Thing -

    ArrayList listItems = new ArrayList();
    

    This list contains list HashMap And HashMap does not implements Comparable.

    java.util.Collections.sort(arList);
    
    public static <T extends Comparable<? super T>> void sort(List<T> list)
    

    List contain(T) must extends Comparable.

    that is why it populate java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.Comparable