我正试着按标题、工作室、年份对数组进行排序。
movies[0] = new Movie2("The Muppets Take Manhattan","Columbia Tristar", 2001);在如何为排序方法创建构造函数方面,我遇到了困难。我不知道如何将所有三个元素分开来对它们进行单独排序。
发布于 2014-03-23 01:45:43
最好是通过实践来学习,而不是提供答案。查看有关对象排序的Java教程中的部分
提示:您需要实现Comparable接口。
发布于 2014-03-23 02:57:22
你可能已经让它起作用了,但我想出了一个答案,所以无论如何我都会把它发出去。我还没有将Comparator interface实现到Movie类中;相反,我只使用Arrays.sort和自定义Comparator根据电影的某些属性对其进行排序。
这是我创建的班级,仅供参考。下面是我用来对示例进行排序的代码:
Movie a = new Movie("The Muppets Take Manhattan", "Columbia Tristar", 2001);
Movie b = new Movie("Fight Club", "Regency Enterprises", 1999);
Movie c = new Movie("Toy Story", "Walt Disney Pictures", 1995);
Movie[] movies = {a, b, c};
// compares the TITLES in ASCENDING order
Arrays.sort(movies, new Comparator<Movie>() {
public int compare(Movie m1, Movie m2) {
return m1.getTitle().compareTo(m2.getTitle());
}
});
// print out the sorted movie array
for (Movie m : movies) {
System.out.println(m + "\n---");
}如果您想要将顺序降为降序,您可以简单地反向比较比较器中的值。例如,您可以更改以下内容:
return m1.getTitle().compareTo(m2.getTitle());对此:
return m2.getTitle().compareTo(m1.getTitle());如果您想比较Movie的不同属性,只需将getTitle()更改为其他东西,如getYear()或getStudio()。示例:
return m1.getYear() - m2.getYear(); // ascending by year因为年份在int中,所以不能使用String compareTo方法,您只需返回差额。
要根据输入来订购电影,请看这段代码。我不想马上吓到你。
https://stackoverflow.com/questions/22585950
复制相似问题