有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带日期的java排序字符串[]

我拼命尝试用日期对数组进行排序,例如“2019年5月31日”。我目前正试图通过转换为日期类型然后返回来实现这一点。这也行得通。我无法将字符串[]转换为日期[]。有人能告诉我怎么做吗?或者如果有必要,给我一个更简单的方法来分类?不幸的是,我还没有在网上找到合适的。也可能是我太笨了

我尝试手动将字符串转换为日期,它可以工作。但我尝试了不同的方法将字符串[]转换为日期[]。我试着打了个圈。。还有一些其他的东西。。。但是它不起作用

public static void main(String[] args) throws ParseException {
    TagebuchIO io = new TagebuchIO();
    String[] stringio = io.getTagebuchliste();
    //He got the Dates with stringio
    SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyy");

    Date date = sdf.parse("10.05.2010");
    Date date2 = sdf.parse("09.02.2012");
    Date[] d = {date, date2};
    Arrays.sort(d);
    String ergbenis1 = sdf.format(d[0]);
    System.out.println(ergbenis1);
    ergbenis1 = sdf.format(d[1]);
    System.out.println(ergbenis1);
}

共 (3) 个答案

  1. # 1 楼答案

    下面的伪代码可能会有所帮助

    ArrayList<String> dateStrings = new ArrayList<>(  );
        [...]
    List<LocalDate> dates = dateStrings.stream()
                .map( LocalDate::parse )
                .collect( Collectors.toList() );
    dates.sort();
    
  2. # 2 楼答案

    可以使用以下方法将字符串[]转换为日期[]:

    Date[] d = new Date[args.length];
    for (int i = 0; i < args.length; i++) {
        d[i] = sdf.parse(dates[i]);
    }
    

    可以按如下方式对日期[]数组d进行排序:

    Arrays.sort(d);
    

    然后修改字符串[]数组,如下所示:

    for (int i = 0; i < args.length; i++) {
        args[i] = sdf.format(d[i]);
    }
    

    我认为这是可以接受的解决方案。你在找别的东西吗

  3. # 3 楼答案

    考虑使用^ {CD1>},而不是^ {< CD2>}:

    import java.time.format.DateTimeFormatter;
    import java.time.LocalDate;
    import java.util.Arrays;
    import java.util.stream.Stream;
    
    class Main {
      public static void main(String[] args) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
    
        String[] strDates = new String[] {"12.06.2019", "31.05.2019", "10.05.2010", "09.02.2012"};
        LocalDate[] dates = Stream.of(strDates).map(date -> LocalDate.parse(date, formatter))
                                               .toArray(LocalDate[]::new);
    
        System.out.println(String.format("Unsorted dates: %s", Arrays.toString(dates)));
        Arrays.sort(dates);
        System.out.println(String.format("Sorted dates: %s", Arrays.toString(dates)));
    
        System.out.println("Formatted Dates:");
        for (LocalDate d : dates) {
          System.out.println(formatter.format(d));
        }
      }
    }
    

    输出:

    Unsorted dates: [2019-06-12, 2019-05-31, 2010-05-10, 2012-02-09]
    Sorted dates: [2010-05-10, 2012-02-09, 2019-05-31, 2019-06-12]
    Formatted Dates:
    10.05.2010
    09.02.2012
    31.05.2019
    12.06.2019