Android Studio在addAll()
方法中爲sort()
行提供了「API記錄爲@since 1.8+」的錯誤消息。我不太清楚這是什麼意思?爲什麼排序方法不適用於此自定義AbstractList實現?
所有我想要做的是一個自定義的List
在那裏我可以通過Articles_Map
的publishedAt
屬性排序List
。
AbstractArticlesList:
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);
}
};
}
Articles_Map:
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;
}
}
會更低,如果你移動的compareFunction到AbstractArticlesList類insted的內部的它做...?也許可以添加類似於AbstractArticlesList類的實現。 – flaimme
請注意,自我排序的'List'違反了'List'合約。真的,這不應該是一個'List',而應該是_have_一個具有正常實現的'List'。 –