对 Java 中的自定义对象数组进行排序

Sorting Array of Custom Object in Java

我正在尝试按从小到大的顺序对项目结束时间进行排序。

我创建了一个名为 Project 的自定义对象列表,并试图根据访问器返回的值对它们进行排序。我重载了比较函数并收到错误:

The method sort(List, Comparator) in the type Collections is not applicable for the arguments (Project[], new Comparator(){})

我的主要代码如下所示,感谢所有帮助。

Collections.sort(projectList, new Comparator< Project>(){

    @Override
    public int compare(Project project1, Project project2)
    {   
       return compareProjects(project1, project2);}
    }
);

public static int compareProjects(Project project1, Project project2)
{ 
    if (project1.getEndTime() > project2.getEndTime())
        return 1;
    else
        return 0;
}

和我的项目Class:

public Project(int projectNum, int start, int end)
{
    this.projectNum = projectNum;
    this.start = start;
    this.end = end;
    this.length = end - start;
}

public static int getEndTime()
{
    return end;
}

Collections.sort operates on a List, and Arrays.sort operates on an array

需要更改 Project.class ,实施 Comparable interface

class Project implements Comparable<Project> {

    @Override
    public int compareTo(Project o) {
        if (this.getEndTime() > o.getEndTime())
        return 1;
    else
        return 0;
    }
}

然后在你的main.class

Arrays.sort(projectList);

你永远不会return-1(例如<)。但是,我建议您使用 Integer.compareTo(int, int) which returns the value 0 if x == y;如果 x < y,则值小于 0;如果 x > y like

则值大于 0
public static int compareProjects(Project project1, Project project2) {
    return Integer.compare(project1.getEndTime(), project2.getEndTime());
}

此外,由于 projectListProject 的数组,您可以将其作为 List<Project>Arrays.asList(T...) 类似

Collections.sort(Arrays.asList(projectList),