java - 对字符串日期进行排序并对其进行排序
问题描述
我想使用按日期(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
解决方案
如果您使用已经可比较的数据类型(a class
that implements 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);
}
请注意,使用
String
s 表示日期通常不是一个好习惯。考虑重构表示日期的类属性以具有合适的数据类型。
推荐阅读
- html - 尝试将导航栏链接居中引导 4
- spring-boot - 使用 springboot 的 Restful LDAP 身份验证服务
- ios - Xcode 配置文件配置问题
- c - 我的关于选择排序的程序有什么问题?
- django - 我可以对图像进行一些预处理并在不保存更改的情况下使用它吗?
- c# - 如何从 XAML 中定义的 ControlTemplate 访问元素(图像)
- casting - 自定义类型转换 - pybind11
- android - 使用 kotlin 在 android studio 中循环播放 mp3?
- java - 如何查看或监控 AWS CodeStar 部署的 Spring 项目应用程序日志?
- swift - 为什么 URLSession.DataTaskPublisher 不发布值?