gpt4 book ai didi

java - 使用 compareTo() 方法对 String 数组的 ArrayList 进行排序

转载 作者:搜寻专家 更新时间:2023-11-01 02:50:33 25 4
gpt4 key购买 nike

我是java新手。

我正在尝试使用 String.compareTo() 对 String 数组的 ArrayList 进行排序。

我已经编译了代码,所以输出是:

Causality,is,a,relationship

It,is,also,called,causation

It,is,about,a,cause,and,its,affect

现在我想对该代码进行排序(按字典顺序),因此输出为:

Causality,a,is,relationship

It,also,called,causation,is

It,a,about,affect,and,cause,is,its

但是我生成了一些疯狂的输出。

我的代码如下。

如有任何帮助,我们将不胜感激。

我已经在这个可能非常简单的问题上工作了几个小时,我准备毁掉我的电脑。谢谢

public class Wk5Q5 {

void process1 () {

String s1 = "Causality is a relationship";
String s2 = "It is also called causation";
String s3 = "It is about a cause and its affect";


ArrayList<String[]> list = new ArrayList<String[]>();


String[] arr1 = s1.split(" ");
list.add(arr1);
String[] arr2 = s2.split(" ");
list.add(arr2);
String[] arr3 = s3.split(" ");
list.add(arr3);

/**
* previously sorted the arraylist of string arrays so that
* each word is separated by commas
*/
for(int i = 0; i < list.size(); i++){
for (int j = 0; j < list.get(i).length; j++){
String t = list.get(i)[j];

if (j > 0){
t = ", " + t;
}
System.out.print(t);
//System.out.println(list.get(i)[j]);

}
System.out.println();
}

/**
* my attempt at sorting each string in each list
*/
for(int z = 0; z < list.size(); z++){
for(int i = 0; i < list.get(z).length; i++){
String x = list.get(z)[i];
for (int j = i+1; j < list.get(z).length; j++){
String y = list.get(z)[j];
if(y.compareTo(x) < 0) {
String temp = list.get(z)[i];
x = list.get(z)[j];
y = temp;
}
System.out.print(x);
}

}
}
}

最佳答案

您执行 selection sort 的问题算法是您不修改正在排序的列表。当您交换 xy 时,列表中相应位置的元素保留在它们原来的位置。

如果您停止使用 xy 并将它们的使用替换为 list.get(z)[i]list .get(z)[j],你的排序算法会产生不同的结果。更好的是,如果家庭作业允许您使用标准库,请查看 built-in way of sorting arrays in Java .

关于java - 使用 compareTo() 方法对 String 数组的 ArrayList 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12111679/

25 4 0