java - 对 ArrayList 进行排序?

标签 java sorting arraylist

我正在尝试创建一个函数,允许您按降序或升序对日期进行排序。但是,我不太确定应该如何去做。这是我到目前为止所解决的问题,但完全陷入困境:

public void sortByYear() {
   String askID = JOptionPane.showInputDialog(null, "Would you like to sort by ascending or descending?");
   if(askID.equalsIgnoreCase("ascending")){
      for(String datePersons : personList){
         String[] splitPerson = datePersons.split("_");
         String date = splitPerson[5];   
      }
   } else if(askID.equalsIgnoreCase("descending")){

     }
}

我的 ArrayList 使用的格式是:ID_NAME_MAIL_PHONE_CITY_DATETIME#

ArrayList 中,其中包含数据,如下所示:

7_Geoffrey Wolf_fermentum.risus@malesuadaaugue.net_1-382-295-5799_Warwick_2010-03-27 09:47:41

如果我有 99 个不同日期的不同人,我该如何对他们进行排序?我用这部分来分割并查找日期:

String[] splitPerson = datePersons.split("_");
String date = splitPerson[5];

最诚挚的问候。

最佳答案

使用Arrays.sort方法并使用自定义比较器。在比较器实现中,解析日期字符串,构造日期对象并进行比较。

Arrays.sort(personList, new Comparator<String>() {
   public int compare(String person1, String person2) {
       Date date1 = parseDate(person1);
       Date date2 = parseDate(person2);
       return date1.compareTo(date2);
       //return date2.compareTo(date1) for reverse order
   } 
});

如果 personList 是列表/集合而不是数组,请使用 Collections 类中的排序方法,其工作方式类似于 Arrays.sort方法。

关于java - 对 ArrayList 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35689740/

相关文章:

java - 如何使用 @ConversationScoped 处理多个支持 bean?

java - ProGuard 是否支持 Java 11?

sorting - Lua - 如何按值(value)链对表进行排序

objective-c - 排序时忽略标点符号(Objective-C)

sorting - Jenkins Pipelines 中的列表就地排序

java - 查找 ArrayList 中与常量相比差异最小的元素

java - 如何将现有的 Java 项目转换为 Maven 项目?

java - 将时间字符串转换为 24 小时格式

java - 将字符串的 ArrayList 与字符串数组进行比较时遇到问题

java - 如何使用每行 lambda/流对 2D 列表进行排序?