Я сортирую ArrayList объектов, которые включают объекты календаря. Я хочу отсортировать ArrayList по возрастанию или по убыванию на основе параметра, используемого при вызове метода сортировки.
@Override
public Collection<TwitterMessage> sortByTime(boolean newestFirst) {
Collection<TwitterMessage> results = new ArrayList<>();
for (int i = 0; i < tweets.size(); i++) {
TwitterMessage tweet1 = tweets.get(i);
TwitterMessage tweet2 = tweets.get(i+1);
if(newestFirst = true) {
if(tweet1.dato().compareTo(tweet2.dato()) >= 0) {
results.add(0, tweet1);
}
}
else {
if(tweet1.dato().compareTo(tweet2.dato()) <= 0) {
results.add(0, tweet1);
}
}
}
return results;
}
Я считаю этот метод правильным. Проблема в том, что возвращаемый тип указан в интерфейсе на основе интерфейса коллекции. Я получаю ошибку компиляции на
results.add(0, tweet1);
line, потому что интерфейс Collection разрешает только results.add(object), а не results.add(int, object), как это делает ArrayList. Есть ли способ добавить объект в индекс, даже если его нет в интерфейсе коллекции?
if(newestFirst = true)
, безусловно, не то, что вы ищете. Должно бытьif(newestFirst == true)
, а еще лучшеif(newestFirst)
. - person Alexis C.   schedule 20.02.2014