Java 确定数组列表是否已排序
我需要估计数组列表是否已排序(不排序) 对字符串进行排序时,它们是按字母顺序排列的。 我尝试使用方法来确定哪个字符串先出现 如果数组列表已排序,则返回true,否则返回false 代码:Java 确定数组列表是否已排序,java,sorting,output,Java,Sorting,Output,我需要估计数组列表是否已排序(不排序) 对字符串进行排序时,它们是按字母顺序排列的。 我尝试使用方法来确定哪个字符串先出现 如果数组列表已排序,则返回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
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;
}
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
public boolean isSorted()
{
布尔排序=真;
对于(int i=1;i
简易测试:
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;
}
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
ArrayList animals=new ArrayList();
ArrayListMethods zoo=新的ArrayListMethods(动物);
动物。添加(“猿”);
动物。加上(“狗”);
动物。添加(“斑马”);
//测试分类
System.out.println(zoo.isSorted());
System.out.println(“预期:true”);
动物。加上(“猫”);
System.out.println(zoo.isSorted());
System.out.println(“预期:false”);
动物。移除(“猫”);
动物。添加(0,“猫”);
System.out.println(zoo.isSorted());
System.out.println(“预期:false”);
**输出:**
假的
预期:正确
假的
期望值:false
假的
期望值:false
这个简单的测试只显示1/3
覆盖率
如何解决这个问题。您的方法中有一个小错误。应该是:
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;
}
public boolean isSorted()
{
布尔排序=真;
对于(int i=1;i0)sorted=false;
}
返回排序;
}
>0
而不是=1
,您无法确定是否返回了1
。更改条件:
if (list.get(i - 1).compareTo(list.get(i)) >0)
您应该检查>0
,而不是=-1
查阅下列文件:
如果参数字符串等于此字符串,则值为0;如果此字符串在字典上小于字符串参数,则值小于0;如果该字符串在字典上大于字符串参数,则大于0的值。
您必须将compareTo expression更改为任意正数,这表示前一个元素按字母顺序排在当前元素之后,因此列表没有顺序
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;
}
public boolean isSorted()
{
布尔排序=真;
对于(int i=1;i0)sorted=false;
}
返回排序;
}
您需要检查未分类的案例
这意味着,如果假设按升序排序,未排序的情况将是在索引i
处发现一个元素与索引i-1
其中element[i]
试试这个
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Sort {
public static void main(String []args) {
List<String> l1=new ArrayList<String>();
List<String> l2=new ArrayList<String>();
l1.add("a");
l1.add("b");
l1.add("c");
l2.add("b");
l2.add("c");
l2.add("a");
if(isSorted(l1)){
System.out.println("already sorted");
}
else{
Collections.sort(l1);
}
}
public static boolean isSorted(List<String> list){
String previous = "";
for (String current: list) {
if (current.compareTo(previous) < 0)
return false;
previous = current;
}
return true;
}
}
import java.util.ArrayList;
导入java.util.Collections;
导入java.util.List;
公共类排序{
公共静态void main(字符串[]args){
列表l1=新的ArrayList();
列表l2=新的ArrayList();
l1.添加(“a”);
l1.添加(“b”);
l1.添加(“c”);
l2.添加(“b”);
l2.添加(“c”);
l2.添加(“a”);
if(isSorted(l1)){
System.out.println(“已排序”);
}
否则{
集合。排序(l1);
}
}
公共静态布尔值已排序(列表){
字符串previous=“”;
用于(当前字符串:列表){
如果(当前与上一个相比)<0
返回false;
先前=当前;
}
返回true;
}
}
您可以编写一个实用的方法,如isSortedList(列表)
public static boolean isSortedList(列表)您如何通过仅检查两个元素来确定列表是否已排序?如果这两个元素已排序,而其他元素未排序,该怎么办?for循环语句中存在语法错误,因此编辑它您根本不需要排序的变量。如果检查失败,则立即返回false。