Error Message: The method sort(List<T>) in the type Collections is not applicable for the arguments (ArrayList<Date>)

31,259

Because Collections.sort expects java.lang.Comparable and not your Comparable interface, change your Date class to implement the java.lang.Comparable.

public class Date implements java.lang.Comparable<Date>{
 ..
}

If you still want to define your own Comparable for some reasons and you still want to use Collections.sort then the your Comparable has to be java.util.Comparable

interface Comparable<T> extends java.lang.Comparable<T> {

}
Share:
31,259
Admin
Author by

Admin

Updated on February 29, 2020

Comments

  • Admin
    Admin about 4 years

    Keep getting error message, but don't know why. Can't get code to sort the list using Collections.sort()

    Here is what I have. 3 java files.

    The Interface file.

    public interface Comparable<T> {
       public int compareTo(T other);
    }
    

    The Class file.

    public class Date implements Comparable<Date>{
    
    private int year;
    private int month;
    private int day;
    
    public Date(int month, int day, int year){   
       this.month = month;
       this.day = day;
       this.year = year;
    }
    
    public int getYear(){
       return this.year;
    }
    
    public int getMonth(){
       return this.month;
    }
    
    public int getDay(){
       return this.day;
    }
    public String toString(){
       return month + "/" + day + "/" + year;
    }
    
    
    public int compareTo(Date other){
        if (this.year!=other.year){
            return this.year-other.year;
        } else if (this.month != other.month){
            return this.month-other.month;
        } else {
            return this.day-other.day;
        }
    }
    

    }

    The Client class

    import java.util.*;
    
    public class DateTest{
       public static void main(String[] args){
    
      ArrayList<Date> dates = new ArrayList<Date>();
      dates.add(new Date(4, 13, 1743)); //Jefferson
      dates.add(new Date(2, 22, 1732)); //Washington
      dates.add(new Date(3, 16, 1751)); //Madison
      dates.add(new Date(10, 30, 1735)); //Adams
      dates.add(new Date(4, 28, 1758)); //Monroe     
    
    
      System.out.println(dates);
      Collections.sort(dates);
      System.out.println("birthdays = "+dates);
    
    }
    
    
    
    
    }
    

    The error message I get is "The method sort(List) in the type Collections is not applicable for the arguments (ArrayList)"

  • ever alian
    ever alian over 3 years
    java.util.Comparable ? java.lang.comparable right?