我試着去使用Comparable
接口排序使用「arrivalTime」字段Car
對象的ArrayList,通過使用自定義compareTo()
方法,但它一直告訴我,我不能因爲Car
對象不是抽象的。我不能抽象。我需要實例化Car
對象。IDE想要類是抽象相媲美
有誰知道爲什麼要我讓我的課程抽象?
我試着去使用Comparable
接口排序使用「arrivalTime」字段Car
對象的ArrayList,通過使用自定義compareTo()
方法,但它一直告訴我,我不能因爲Car
對象不是抽象的。我不能抽象。我需要實例化Car
對象。IDE想要類是抽象相媲美
有誰知道爲什麼要我讓我的課程抽象?
好像是IDE強迫你讓你的類抽象或定義compareTo
方法,因爲你實現了Comparable
接口。
您在類內的方法定義不正確。它必須是
@Override
public int compareTo(Car o)
{
return 0;
}
由於該方法不會覆蓋一個在正確的接口,IDE會要求你將類標記抽象,以避免編譯錯誤。另一種選擇是正確地在類中實現抽象方法並擺脫錯誤。如果您使用eclipse,請在該類上按Ctrl + 1並選擇「添加未實現的方法」選項。
你需要使用這種方式:
public class Car implements Comparable<Car>{
...
@Override
public int compareTo(Car other) {
...
}
}
這裏是一個工作(如果比較簡陋)例如:
public class Cars
{
static class Car
{
Date arrivalTime;
public Car(Date time)
{
arrivalTime = time;
}
}
static class CarComparator implements Comparator<Car>
{
@Override
public int compare(Car o1, Car o2)
{
return o1.arrivalTime.compareTo(o2.arrivalTime);
}
}
public static void main(String[] args)
{
List<Car> cars= new ArrayList<Car>();
// create and add some cars here
Collections.sort(cars, new CarComparator());
}
}
您應該使用Comparable
接口這樣的:
public class Car implements Comparable<Car> {
private int arrivalTime;
public Car(int arrivalTime) {
this.arrivalTime = arrivalTime;
}
public int getArrivalTime() {
return this.arrivalTime;
}
@Override
public int compareTo(Car car) {
return this.arrivalTime - car.getArrivalTime();
}
}
做實際的排序:
LinkedList<Car> cars = new LinkedList<Car>();
cars.add(new Car(20000));
cars.add(new Car(30000));
cars.add(new Car(40000));
Collections.sort(cars);
看看我的帖子here關於排序。
與郵政相關的代碼。 – kosa