首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入排序

插入排序
EN

Stack Overflow用户
提问于 2014-03-23 01:31:51
回答 2查看 144关注 0票数 0

我正试着按标题、工作室、年份对数组进行排序。

代码语言:javascript
复制
movies[0] = new Movie2("The Muppets Take Manhattan","Columbia Tristar", 2001);

在如何为排序方法创建构造函数方面,我遇到了困难。我不知道如何将所有三个元素分开来对它们进行单独排序。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-23 01:45:43

最好是通过实践来学习,而不是提供答案。查看有关对象排序的Java教程中的部分

提示:您需要实现Comparable接口。

票数 0
EN

Stack Overflow用户

发布于 2014-03-23 02:57:22

你可能已经让它起作用了,但我想出了一个答案,所以无论如何我都会把它发出去。我还没有将Comparator interface实现到Movie类中;相反,我只使用Arrays.sort和自定义Comparator根据电影的某些属性对其进行排序。

这是我创建的班级,仅供参考。下面是我用来对示例进行排序的代码:

代码语言:javascript
复制
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---");
}

如果您想要将顺序降为降序,您可以简单地反向比较比较器中的值。例如,您可以更改以下内容:

代码语言:javascript
复制
return m1.getTitle().compareTo(m2.getTitle());

对此:

代码语言:javascript
复制
return m2.getTitle().compareTo(m1.getTitle());

如果您想比较Movie的不同属性,只需将getTitle()更改为其他东西,如getYear()getStudio()。示例:

代码语言:javascript
复制
return m1.getYear() - m2.getYear(); // ascending by year

因为年份在int中,所以不能使用String compareTo方法,您只需返回差额。

要根据输入来订购电影,请看这段代码。我不想马上吓到你。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22585950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档