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)"
sort() method from Java Collection framework uses iterative merge sort which is a stable algorithm.
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> {
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With