确定数组列表是否已排序

naz*_*art 5 java sorting output

我需要估计数组列表是否已排序(不排序).

字符串排序时,它们按字母顺序排列.我尝试使用compareTo()方法来确定首先出现的字符串

如果数组列表已排序,则返回true,否则返回false.

码:

public boolean isSorted()
{
    boolean sorted = true;        
    for (int i = 1; i < list.size(); i++) {
        if (list.get(i-1).compareTo(list.get(i)) != 1) sorted = false;
    }

    return sorted;
}
Run Code Online (Sandbox Code Playgroud)

简单测试:

    ArrayList<String> animals = new ArrayList<String>();
    ArrayListMethods zoo = new ArrayListMethods(animals); 
    animals.add("ape");
    animals.add("dog");
    animals.add("zebra");

    //test isSorted
    System.out.println(zoo.isSorted());
    System.out.println("Expected: true");

    animals.add("cat");
    System.out.println(zoo.isSorted());
    System.out.println("Expected: false");

    animals.remove("cat");
    animals.add(0,"cat");
    System.out.println(zoo.isSorted());
    System.out.println("Expected: false");

    **Output:**
    false
    Expected: true
    false
    Expected: false
    false
    Expected: false
Run Code Online (Sandbox Code Playgroud)

这个简单的测试只显示了1/3覆盖率

如何解决这个问题.

Gri*_*aub 8

您的方法中有一个小错误.应该 :

public boolean isSorted()
{
    boolean sorted = true;        
    for (int i = 1; i < list.size(); i++) {
        if (list.get(i-1).compareTo(list.get(i)) > 0) sorted = false;
    }

    return sorted;
}
Run Code Online (Sandbox Code Playgroud)

>0而不是!=1,你不能确定1是否返回..