排序实现Comparable不能在Android上运行

时间:2016-08-01 22:25:01

标签: java android arrays

我在clas News上实现了Comparable,以便我可以通过publishDate安排一个新闻阵列

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;


public class News implements Comparable<News>{

    private String title;
    private String description;
    private String link;
    private String guid;
    private String pubDate;
    private Date date;
    private String author;
    private String image;
    private String category;
    private String feedIconLink;



    @Override
    public int compareTo(News anotherNews) {

        long compareDateInMilisecconds = ((News) anotherNews).getDateInMilliseconds();

        long result = compareDateInMilisecconds - this.getDateInMilliseconds();

        int finalResult = (int) result;

        return finalResult;
    }

代码编译并运行并且它没有错误,但它实际上并没有改变数组上对象的顺序。

 @Override
        protected void onPostExecute(List<News> input) {

            for (News aNews : input){
                Log.v("Before", aNews.getFeedIconLink());
            }

            Arrays.sort(input.toArray());

            for (News aNews : input){
                Log.v("After", aNews.getFeedIconLink());

            }

            this.listener.finish(input);
            }

我在排序之前和之后的Log.v并没有任何变化,即使在调试它运行整个Array的整个CompareTo方法。

我有什么问题吗?

1 个答案:

答案 0 :(得分:1)

你是:

  • List<News>转换为News[]

  • News[]

  • 进行排序
  • 扔掉News[]

相反,请对List<News>using Collections.sort()进行排序,而不是Arrays.sort()