对 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());
}
此外,由于 projectList
是 Project
的数组,您可以将其作为 List<Project>
与 Arrays.asList(T...)
类似
Collections.sort(Arrays.asList(projectList),
我正在尝试按从小到大的顺序对项目结束时间进行排序。
我创建了一个名为 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
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),