0

我想知道是否有办法在数组列表中找到重复元素。对于我正在尝试做的事情的更多上下文,我有一个字符串数组列表。每个字符串都包含有关 MP3 文件的信息。它们有标题、作曲家和运行时间,由“&”字符分隔(例如 Friday&Rebecca Black&666)。

arraylist 已经根据运行时间进行了快速排序。但是,我还需要对数组列表进行排序,以便如果歌曲的运行时间相等,它们应该按标题的字典顺序排列,如果标题也相同,则按作曲家排列。

我希望能够在 arraylist 中找到重复的运行时间,以便我可以使用该compareTo方法按我需要的字母顺序排序。我已经实现了从整个字符串中提取相关信息的方法getTime, 。有没有一种方法可以用新的方法来做到这一点,或者更好的是有没有一种方法可以将它合并到我的快速排序算法中,这样我就不必再次搜索排序的数组列表了?getTitlegetComposeralphabetical

谢谢。

4

2 回答 2

7

您需要为您的排序更改比较器,以便在出现平局(相同的运行时间)时,它会查看标题和作曲家。看:

 java.util.Collections.sort(List list, Comparator c) 

特别是主要方法:

int compare(Object o1, Object o2) 
于 2011-05-27T19:57:06.177 回答
2

删除列表中的重复元素并不是实现目标的最佳方式。相反,请考虑使用 Comparator (如果会有多种排序方法),或者让您的 MP3File 类实现 Comparable (如果只有一个,或者显然有一个最好的)。

于 2011-05-27T19:59:28.390 回答