2016-01-02 3 views
1

У меня есть ArrayList, заполненный результатами, каждый результат имеет атрибут с именем resultValue, в котором хранится double. Я хочу, чтобы отсортировать ArrayList на основе значения атрибута resultValue и иметь возможность распечатать его, как это:Хотите отсортировать ArrayList на основе значения атрибута

  1. Resultname с resultValue

  2. Resultname с resultValue

  3. Resultname с resultValue

Мой вопрос: Почему это не работает? и как мне заставить его работать?

До сих пор Ive сделал метод compareTo в моем классе с именем Result. Это выглядит следующим образом:

public int compareTo(Result otherResult) { 
    if (this.resultValue > otherResult.resultValue()) { 
      return 1; 
     } else if (this.resultValue < otherResult.resultValue()) { 
      return -1; 
     } else { 
      return 0; 
     } 
    } 

И в моем классе, который содержит ArrayList, который хранит результаты я сделал этот метод:

void typeOutOrderedList() { 
    Collections.sort(resultlist); 
    for (int i = 0; i < resultlist.size(); i++) { 
     Result res = resultlist.get(i); 
     System.out.println(res.competitionStartNumber() + " has the result" + res.resultValue()); 
    } 
} 
+1

Вы создали 'Result' интерфейс' Comparable'? – Vlad

+0

@Vlad общественный класс Результат реализует Сопоставимые У меня есть –

+0

@ A.Bohlund Вы должны изменить свой класс размораживание в класс 'Результат общественного реализует Сопоставимые ' – schwobaseggl

ответ

0

Вы изобретали колесо; использовать JDK, чтобы сделать код более простым и читаемым:

public int compareTo(Result otherResult) { 
    return Double.compare(otherResult.resultValue(), resultValue()); 
} 

отметить также порядок параметров, передаваемых compare() - это даст вам заказ вы хотите (по убыванию).

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