Как проверить, отсортирована ли данная строка или массив дат или нет. Прикрепление моего кода

#java

#java

Вопрос:

Я не могу проверить, отсортирован ли массив дат или нет.

 public void FilterBy() throws IOException, InterruptedException, ParseException {
    Login();
        ConvPage cmp = new ConvPage(driver);
            cmp.clickDateSorting();
            int ActualConvNum = cmp.ConvTable().findElements(By.xpath(cmp.ConvPath())).size();
            Date[] versions = new Date[ActualConvNum-700];
            SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm");
            for(int i = 0; i<ActualConvNum-700;i  ) {
                String date = driver.findElement(By.xpath(cmp.XpathForVersionCell(i 1))).getText();
                versions[i] = sdf.parse(date);
            }

                        if (ArraySortVal(versions)) { 
                System.out.println("Same"); }
            else {
                System.out.println("Not same"); 
            }


    }

    public static  boolean ArraySortVal(Date[] arr) {
        List<Date> copyOf = new ArrayList<>(Arrays.asList(arr));
        Collections.sort(copyOf);
            if (Arrays.asList(arr).equals(copyOf)){
            return true;
            } else {
           return false; // Not sorted of course but if Month
            }

    }
  

Я получаю массив дат и хочу убедиться, отсортирован он или нет. метод «ArraySortVal» не работает. есть идеи?

Ответ №1:

Вы могли бы использовать before метод, определенный в java.util.Date классе :

 public boolean isSorted(Date[] dates) {
 if(dates.length <= 1) return true;
 for(int i = 1; i < dates.length;   i) {
  // you can check with > operator if you want to test the reverse order
  if(dates[i].before(dates[i - 1])) return false;
 }
 return true;
}

  

Комментарии:

1. @Paul Нет, это не всегда возвращает false. Для пустого массива это определенно возвращает true. Вам следует быть более осторожным, говоря «всегда» или «никогда».