对于我的作业,我必须创建一个方法来对存储在对象类中的整数和字符串进行排序。请记住,我必须使用类型转换。我想使用泛型,但我的老师坚持让我使用 1.4.2(没有泛型)。我可以对时间进行排序,对于字母顺序排序,我使用我的方法对时间进行排序并添加了一个compareTo。我玩了一下,但是当我输出它时,它会按照我输入的顺序提供我输入的所有内容。不按字母顺序排列。
这是我创建的用于存储输入的类:
public class showInfo
{
String name;
String day;
int time;
}
以下是按名称排序的方法!
//method to sort and display info
public static void sortName(){
for(int i = 0; i < show.size() - 1; i++) {
for(int j = 0; j < show.size() - 1; j++){
if(((showInfo)show.get(i)).name.compareTo(((showInfo)show.get(i+1)).name) > 0){
showInfo temp = new showInfo();
temp.name = ((showInfo)show.get(j)).name;
temp.day = ((showInfo)show.get(j)).day;
temp.time = ((showInfo)show.get(j)).time;
((showInfo)show.get(j)).time = ((showInfo)show.get(i)).time;
((showInfo)show.get(j)).day = ((showInfo)show.get(i)).day;
((showInfo)show.get(j)).name = ((showInfo)show.get(i)).name;
((showInfo)show.get(i)).time = temp.time;
((showInfo)show.get(i)).day = temp.day;
((showInfo)show.get(i)).name = temp.name;
}
}
}
任何帮助都会很棒!提前致谢。 :)
(PS。我知道我需要将“showInfo”更改为“ShowInfo”,但完成后我会这样做。)
最佳答案
您的代码的一个问题是您正在比较 show.get(i)
与 show.get(i+1)
但然后交换 show.get(i)
与 show.get(j)
。您应该与 show.get(j)
进行比较。另外,内部循环应该转到 j < show.size()
而不是show.size() - 1
。最后,您可以在 i + 1
处启动内循环。而不是 0
.
一旦确定需要交换,只需交换列表中的引用即可做得更好,而不是交换每个字段:
showInfo tmp = (showInfo)show.get(i);
show.set(i, show.get(j));
show.set(j, tmp);
关于java - 按字母顺序对对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18855059/