繁体   English   中英

通过Collection接口拒绝的索引将元素添加到ArrayList

[英]Adding element to ArrayList by index denied by Collection interface

我正在对包含Calendar对象的对象的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;
}

我认为这种方法是正确的。 问题在于,在接口中将returntype指定为基于Collection接口。 我收到了一个编译错误

results.add(0, tweet1);

这是因为Collection接口仅允许result.add(object),而不允许result.add(int,object)像ArrayList一样。 有没有一种方法可以将对象添加到索引中,即使它不在Collection接口中?

只需将变量声明为列表即可:

List<TwitterMessage> results = new ArrayList<>();

要对列表进行排序,应使用Collections.sort() ,并将自定义比较器作为参数传递。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM