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

时间:2015-10-30 04:52:36

标签: java comparison

我正在尝试将项目结束时间从最小值排序到最大值。

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

  

类型集合中的方法sort(List,Comparator)不适用于参数(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;
}

和我的项目类:

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;
}

2 个答案:

答案 0 :(得分:3)

  

Collections.sort在List上运行,Arrays.sort在数组上运行

需要更改datediff(STR_TO_DATE(your_column_to_convert, '%d/%m/%Y %H:%M:%S'), CURRENT_DATE()) ,实施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

答案 1 :(得分:0)

您永远不会返回-1(例如<)。但是,我建议您使用Integer.compareTo(int, int),如果x == y,则返回值0;如果x <1,则小于0的值。 Ÿ;如果x> 1,则值大于0 y 喜欢

public static int compareProjects(Project project1, Project project2) {
    return Integer.compare(project1.getEndTime(), project2.getEndTime());
}

此外,由于projectList是一个Project数组,因此您可以将其List<Project>Arrays.asList(T...)类似

Collections.sort(Arrays.asList(projectList),