Есть ли способ проверить, что LinkedList<String> находится в порядке убывания?

public static boolean verifyRecords(LinkedList<String> recordList, String order) throws Exception {

 /*To check ascending order*/
    if("Ascending".equalsIgnoreCase(order) || "A".equalsIgnoreCase(order)) {
        String previous = new String();
        for(String current : recordList) {
            if(current.compareTo(previous) < 0) 
                return false;
            previous = current;
        }
    } else if("Descending".equalsIgnoreCase(order) || "D".equalsIgnoreCase(order)) 
   {  
        for(String current : recordList) {
            if(current.compareTo(previous) > 0) 
                return false;
            previous = current;
        }
    } 
    return true;
}

Здесь я даю новую String(), т.е. Empty, строку для начала в порядке возрастания. Но для По убыванию, какой должна быть начальная строка, чтобы начать сравнение в порядке убывания, которое я должен использовать?

Любая помощь приветствуется.

2 ответа

Вам не нужно зацикливаться до последнего элемента, вы можете сравнивать любые неровности и отрываться от них для достижения ваших результатов или проверки списка.

if ("Ascending".equalsIgnoreCase(order) || "A".equalsIgnoreCase(order)) {
        for (int i = 1; i < recordList.size(); i++) {
            if (recordList.get(i - 1).compareTo(recordList.get(i)) > 0) {
                isSorted = false;
                break;
            }
        }

    } else if ("Descending".equalsIgnoreCase(order)
            || "D".equalsIgnoreCase(order)) {
        for (int i = 1; i < recordList.size(); i++) {
            if (recordList.get(i - 1).compareTo(recordList.get(i)) < 0) {
                isSorted = false;
                break;
            }
        }


    }
    return isSorted;

Вы можете использовать Collections.reverse(список) для сравнения. Идея состоит в том, чтобы создать поверхностную копию списка записей, отсортировать по убыванию и сравнить их.

    LinkedList<String> recordList = new LinkedList<String>(Arrays.asList("a","B", "c"));
    LinkedList<String> validateList = new LinkedList<String>(recordList);
    Collections.sort(validateList); // sorts in ascending order
    Collections.reverse(validateList); // reverses the ascending ordered list
    System.out.println(recordList.equals(validateList));
Другие вопросы по тегам