2016-12-03 5 views
0

У меня возникли проблемы с этим в течение нескольких дней и вы не можете пройти мимо него. У меня есть массив, который хранится.Проблема с сортировочным элементом 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 основан на STARTTIME, который использует час и минуту от моего Time класса. Когда я попытался использовать compareTo, я сбился с толку. Я поместил его в класс Time, но потом понял, что для сравнения экземпляров должен быть класс Event. Как использовать compareTo для сравнения endTimes, и как мне выводить сортировку. Когда я поставил СотрагеТ в моих событиях я получил

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; 
} 

Также я мог extend класс, или я должен реализовать его использовать compareTo

ответ

0

Как бы использовать СотрагеТа для сравнения EndTimes,

compareTo метод для Event класса будет вызывать метод compareTo на вашем Time классе, и использовать результат как часть O определяя порядок событий.

и как вывести сортировку.

Один из способов - использовать цикл и print или println звонки.

Когда я поставил СотрагеТо в моих событий я получил: "The method sort(List<T>) in the type Collections is not applicable for the arguments (ArrayList<Event>)"

Объявляет тип events быть List<Event>.

Кстати, положив compareTo в событиях, это не вызвало. Это было вызвано другим изменением/другой ошибкой.

Также я мог расширить класс, или я должен реализовать его использовать СотрагеТо

Любой класс, который должен быть сопоставимыми потребности в «реализации» интерфейс Comparable со своим типа, как тип параметра; например

public class Event implements Comparable<Event> { 

Затем необходимо обеспечить реализацию метода compareTo.

+0

Как я могу вызвать метод compareTo в классе 'Time' из моего' compareTo' в 'Event'? – ProgrammingBeginner24

+0

Точно так же, как вы назовете * какой-либо метод на экземпляре объекта! –

Смежные вопросы