我正在对包含日历对象的对象的 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);
行,因为集合接口只允许 results.add(object),而不是像 ArrayList 那样允许 results.add(int, object)。有没有办法将对象添加到索引中,即使这不在集合接口中?
只需将变量声明为 List:
List<TwitterMessage> results = new ArrayList<>();
要对列表进行排序,应使用 Collections.sort()
,将自定义比较器作为参数传递。