Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么排序方法不能在这个定制的AbstractList实现上工作?_Java_Android_List - Fatal编程技术网

Java 为什么排序方法不能在这个定制的AbstractList实现上工作?

Java 为什么排序方法不能在这个定制的AbstractList实现上工作?,java,android,list,Java,Android,List,Android Studio在sort()行中的addAll()方法中给了我一个“使用API记录为@since 1.8+”的错误。我不太清楚这意味着什么 我只想做一个自定义的列表,在这里我可以根据文章映射的publishedAt属性对列表进行排序 摘要文章列表: public class AbstractArticlesList extends AbstractList<Articles_Map> { private final List<Articles_Map>

Android Studio在
sort()
行中的
addAll()
方法中给了我一个“使用API记录为@since 1.8+”的错误。我不太清楚这意味着什么

我只想做一个自定义的
列表
,在这里我可以根据
文章映射
publishedAt
属性对
列表
进行排序

摘要文章列表

public class AbstractArticlesList extends AbstractList<Articles_Map> {
    private final List<Articles_Map> l;

    public AbstractArticlesList() {
        l = new ArrayList<>();
    }

    public Articles_Map get(int index) {
        return l.get(index);
    }

    public Articles_Map set(int index, Articles_Map element) {
        Articles_Map oldValue = l.get(index);
        l.add(index, element);
        return oldValue;
    }

    public int size() {
        return l.size();
    }

    private void doAdd(Articles_Map another) {
        l.add(another);
    }

    public void addAll(List<Articles_Map> others) {
        for (Articles_Map a : others) {
            doAdd(a);
        }
        l.sort(byPublishedAtComparator);
    }

    private final Comparator<Articles_Map> byPublishedAtComparator =
            new Comparator<Articles_Map>() {
                @Override
                public int compare(Articles_Map o1, Articles_Map o2) {
                    if (o1.publishedAt == null) {
                        return (o2.publishedAt == null) ? 0 : -1;
                    } else if (o2.publishedAt == null) {
                        return 1;
                    }
                    return o1.publishedAt.compareTo(o2.publishedAt);
                }
            };
}
public class Articles_Map {
    public final String title;
    public final String description;
    public final String url;
    public final String urlToImage;
    public final Date publishedAt;

    public Articles_Map(String title, String description, String url, String urlToImage, Date publishedAt) {
        this.title = title;
        this.description = description;
        this.url = url;
        this.urlToImage = urlToImage;
        this.publishedAt = publishedAt;
    }
}
(安卓7.0),感谢安卓开始采用Java 1.8


如果您的
minSdkVersion
低于24。

如果您将compareFunction移到AbstractArticlesList类而不是内部…,是否可以执行此操作。。。?还可以将实现类似地添加到AbstractArticlesList类中。请注意,自排序
List
违反了
List
约定。实际上,这不应该是一个
列表
,而是应该有一个正常实现的
列表
。谢谢,这与Louis Wasserman的建议结合在一起就成功了。