2016-12-03 4 views
0

私は数日間この問題を抱えており、それを越えることはできません。私は格納するarrayListを持っています。私は私のendTimeのに基づいて、私のイベントをソートしたいarrayListの要素を並べ替えるのに問題があります

public class Application { 

Time startTime = new Time(hour,minute); 
Time endTime = new Time((startTime.getHour()), (startTime.getMinute() + duration)); 
Event e1 = new Event("Lecture", title, startTime, endTime); 

、私は取得しています問題は、endTimeのが私のTimeクラスから時間と分を使用するのstartTimeに基づいていることです。 compareToを使ってみると、私は混乱していました。 Timeクラスに入れましたが、インスタンスを比較するにはEventクラスに入っていなければなりません。 endTimesを比較するためにcompareToを使用する方法と、ソートを出力する方法私は、イベント内のcompareToを入れていたとき、私はまた、私extendクラス、または私はそれを実装する必要がありますが、私はendTimesを比較するためのcompareToを使用する方法compareTo

答えて

0

を使用することができ

The method sort(List<T>) in the type Collections is not applicable for the arguments (ArrayList<Event>) 

      Collections.sort(events); 

public Event(String type, String title, Time startTime, Time endTime) { 
    this.type = type; 
    this.title = title; 
    this.startTime = startTime; 
    this.endTime = endTime; 
} 

private int minute; 

public Time(int hour, int minute) { 
    this.minute = hour * 60 + minute; 
} 

を得ました

あなたTimeクラスにcompareToメソッドを呼び出し、一部のOとして結果を使用することになり、あなたのEventクラスのcompareTo方法イベントの順序を決める。

どのように出力するのですか。

1つの方法は、ループを使用し、printまたはprintlnコールです。 "The method sort(List<T>) in the type Collections is not applicable for the arguments (ArrayList<Event>)"

List<Event>するeventsのタイプを宣言します。私は私が得た私のイベント内のcompareToを入れていた

ところで、compareToをイベントに入れてもそれは発生しませんでした。それは別の変更/別のミスによって引き起こされたものです。

はまた、私はクラスを拡張することができ、または私がのcompareTo

として、独自のタイプでComparableインタフェースを「実装」に匹敵するニーズにする必要がある任意のクラスを使用するようにそれを実装する必要がありますタイプパラメータ。例えば

public class Event implements Comparable<Event> { 

次に、compareToメソッドの実装を提供する必要があります。

+0

私の 'Time'クラスの' compareTo'メソッドを 'Event'の私のcompareToからどのように呼び出すのですか? – ProgrammingBeginner24

+0

オブジェクトのインスタンスに対して*任意の*メソッドを呼び出すのと同じ方法です! –

関連する問題