接受多个参数的Collections.sort

时间:2020-04-03 22:38:46

标签: java collections

我是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(){} ,该方法应接受参数以指定排序是升序还是降序,并且还应基于对哪个课程属性进行排序课程,并打印课程的排序列表。如何编写此方法?

2 个答案:

答案 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);
        }
    }
}