java - 对字符串日期进行排序并对其进行排序

标签 java sorting compare

我想按日期对我的文章列表进行排序 (dd/mm/yyyy)。 日期是字符串。

public class ArticleComparator implements Comparator<Article> {

    @Override
    public int compare(Article a1, Article a2) {
        // TODO Auto-generated method stub
        int result = a1.getDate().compareTo(a2.getDate());
        if(result == 0) 
            result = a1.getAuteur().getPseudo().compareTo(a2.getAuteur().getPseudo());
    return result;
}
public class ReseauSocial {

    private HashMap<String, CompteUtilisateur> utilisateurs; 
    private List <Article> article; 

    public ReseauSocial() {
    }

    public void tirerArticles() {
        Collections.sort(article, new ArticleComparator());
    }

    public void connecter(String pseudo, String mdp) {
    }
}

但是你能帮我按从最新到最旧的顺序对日期进行排序

<小时/>

谢谢您的回答,但它不起作用。这是我修改代码后得到的

public class MainClass {

    static List<Article> articles = new ArrayList<>();

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Article a1 = new Article ("article1", "TP1", true, "01/02/2018");
        Article a2 = new Article ("article2", "TP2", true, "01/02/2019");
        articles.add(a1);
        articles.add(a2);

        ReseauSocial rsc = new ReseauSocial(articles);
        rsc.tirerArticles();

        for(int i = 0; i<articles.size(); i++) {
            System.out.print("Articles : "+ articles.get(i).getDate().toString()+"\n");

        }

    }

}
Article 1 : Fri Feb 01 00:00:00 CET 2019
Articles 2 : Thu Feb 01 00:00:00 CET 2018
Articles : 01/02/2018
Articles : 01/02/2019

最佳答案

如果您使用已经可比较的数据类型(实现 Comparable),
那么你可以只返回它自己的 compareTo 方法的结果:

public int compare(Article a1, Article a2) {
    // define a suitable formatter
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy");
    // parse both dates
    LocalDate ldOne = LocalDate.parse(a1.getDate(), dtf);
    LocalDate ldTwo = LocalDate.parse(a2.getDate(), dtf);
    // compare the dates and return the result
    return ldOne.compareTo(ldTwo);
}

Please note that using Strings for dates is generally not a good practice. Consider refactoring your class attributes that represent dates to have a suitable data type.

关于java - 对字符串日期进行排序并对其进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56394619/

相关文章:

比较数组内的数字

java - 从 HashMap 中随机获取值

java - 使用 gson 将结果集转为 json

java - 如何在java中获取模数和pubExp?

javascript - 数组排序不适用于 Android 手机,但适用于模拟器和 AIR

java - 使用具有多个比较器的比较器

java - 泛型/参数化类 Java 命名空间

在数组中收集相同的单词,C

c# - 在另一个对象集合中对对象集合进行排序

C# 比较两个 double 与 .Equals()