我正在尝试将项目结束时间从最小值排序到最大值。
我创建了一个名为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;
}
答案 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),