【发布时间】:2011-05-28 06:10:19
【问题描述】:
我必须制作一个按运行时间对歌曲集进行排序的程序。我必须分析选择的歌曲,每首歌曲都有一个“Title”字符串、一个“Composer”字符串和一个“Running Time”整数。输入将通过标准输入进行管道传输,输出将在标准输出中。
这是一个示例输入:
3
&
Pink Frost&Phillipps, Martin&234933
Se quel guerrier io fossi&Puccini, Giacomo&297539
Non piu andrai&Mozart&234933
M'appari tutt'amor&Flotow, F&252905
然后输出:
Se quel guerrier io fossi&Puccini, Giacomo&297539
M'appari tutt'amor&Flotow, F&252905
Non piu andrai&Mozart&234933
我知道我必须按运行时间对它们进行排序,但我不确定要使用哪种排序算法。根据一般知识,想到的两种排序算法是合并排序和快速排序,因为它们似乎是平均最快的。我也有使用 Comparator 来比较 Collection 中的两个“运行时间”元素的想法。
有人可以指点我正确的方向吗?
【问题讨论】:
-
顺便说一句 - String 类有
compareTo(String s)方法,Integer 类也应该有它,但你永远不应该使用它。在大多数情况下,您只需要 primitiveint类型。所以比较ints 就像return firstInt - secondInt;一样简单,更准确地说……这就是你需要的public class TitleComparator implements Comparator<MySong> { @Override public int compare(MySong firstSong, MySong second) { return firstSong.getTitle() - second.getTitle(); } }