有没有办法验证链接列表<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;
}

在这里,我给出了新的字符串((,即空,字符串以升序开始。但是对于下降顺序,启动字符串开始降序比较应该是什么?

任何帮助将不胜感激。

您不需要循环循环直到最后一个元素,您可以比较任何不平衡的东西并从那里折断以达到您的结果或验证列表。

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.redverse(list(进行比较。这个想法是创建记录清单的浅副本,按降序排序并进行比较。

    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));

最新更新