我想知道是否有办法在arraylist中找到重复的元素。对于我正在尝试做的更多上下文,我有一个字符串的arraylist。每个字符串都包含有关MP3文件的信息。他们有一个标题,作曲家和运行时间由'&'分开角色(例如Friday& Rebecca Black& 666)。
根据跑步时间,arraylist已被快速排序。但是,我还需要对arraylist进行排序,这样如果歌曲的运行时间相等,它们应该在标题上按字典顺序排列,然后在作曲家的标题上也是如此。
我希望能够在arraylist中找到重复的运行时间,以便我可以使用compareTo
方法按字母顺序排序,就像我需要的那样。我已经实现了方法getTime
,getTitle
,getComposer
,它们从整个字符串中提取相关信息。有没有办法可以用alphabetical
之类的新方法做到这一点,或者更好的方法是我可以将它合并到我的快速排序算法中,这样我就不必再搜索排序的arraylist了吗? / p>
感谢。
答案 0 :(得分:7)
您需要更改比较器的比较器,以便在出现平局(相同的运行时间)时查看标题和作曲家。参见:
java.util.Collections.sort(List list, Comparator c)
特别是主要方法:
int compare(Object o1, Object o2)
答案 1 :(得分:2)
删除列表中的重复元素并不是实现目标的最佳方式。相反,请考虑使用Comparator(如果有多种排序方法),或者让你的MP3File类实现Comparable(如果只有一个,或者显然是最好的)。