我是Java新手。我正在学习Java集合,并且对编写程序以按属性排序有疑问。所以我有一个带有这些变量的课程:
public class Course{
private String courseName;
private String courseDescription;
}
和另一个包含“课程”课程的“班级学生”,该课程是课程变量的链接列表:
public class Student{
private String name;
private LinkedList<Course> courses;
}
public Student(String name) {
this.name = name;
this.courses = new LinkedList<Course>();
}
我想在Student类中编写一个方法 public void sortCourse(){} ,该方法应接受参数以指定排序是升序还是降序,并且还应基于对哪个课程属性进行排序课程,并打印课程的排序列表。如何编写此方法?
答案 0 :(得分:5)
为Fureeish said in a comment:使其接受C:\Users\IEUser\Desktop\Python>python ReverseShell.py
Traceback (most recent call last):
File "ReverseShell.py", line 34, in <module>
Login()
File "ReverseShell.py", line 11, in Login
s.send("Login: ")
TypeError: a bytes-like object is required, not 'str'
。
赞:
Comparator
然后,呼叫者将编写如下内容:
public void sortCourse(Comparator<Course> comparator) {
this.courses.sort(comparator);
}
答案 1 :(得分:1)
您可以使用Comparable
界面对课程进行排序。为此,您的Course
类需要实现Comparable
接口。
public class Course implements Comparable <Course>{
private String courseName;
private String courseDescription;
public Course(String courseName, String courseDescription){
this.courseName = courseName;
this.courseDescription = courseDescription;
}
public int compareTo(Course c) {
return this.courseName.compareTo(c.courseName);
}
}
现在,您可以调用Collections.sort(student.courses)
方法对课程列表进行排序。
public class Student{
private String name;
private LinkedList<Course> courses;
public Student(String name) {
this.name = name;
this.courses = new LinkedList<Course>();
}
public void sortCourse(String sortOrder){
if(sortOrder.equals("asc")){
Collections.sort(this.courses);
} else {
Collections.sort(this.courses);
Collections.reverse(this.courses);
}
}
}