java - 按字母顺序对对象进行排序

标签 java sorting

对于我的作业,我必须创建一个方法来对存储在对象类中的整数和字符串进行排序。请记住,我必须使用类型转换。我想使用泛型,但我的老师坚持让我使用 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/

相关文章:

java - 如何对对象集合进行排序?

java - 递归排序日期时出现 StackOverflowError

java - 如何排除 aspectJ 中的 getter 和 setter?

java - 使用正则表达式从字符串中删除重复字符,保持第一次出现

java - 编写 java.net.SocketImplFactory

java - 有没有办法从操作系统访问(读/写)特定应用程序的 sqlite 数据库?

java - 如何在java中对另一个 map 中的一组 map 进行排序?

java - 在 java 中读取 DataInputStream 中的整数用户输入?

javascript - 在 Chrome 中对超过 10 个对象的数组进行排序

javascript - 按对象属性的键对对象数组进行排序