Поиск дубликатов элементов в массиве - PullRequest
0 голосов
/ 27 мая 2011

Мне было интересно, есть ли способ найти дубликаты элементов в массиве.Для большего контекста того, что я пытаюсь сделать, у меня есть массив строк.Каждая строка содержит информацию о файле MP3.У них есть название, композитор и время выполнения, разделенные символом '&' (например, Friday & Rebecca Black & 666).

Массив уже был быстро отсортирован в соответствии с временем выполнения.Тем не менее, мне также нужно отсортировать arraylist так, чтобы, если время исполнения для песен было одинаковым, они были приведены в лексикографическом порядке к заголовку, а затем к композитору, если заголовки также равны.

IЯ хочу найти дубликаты времени выполнения в массиве, чтобы я мог использовать метод compareTo для сортировки по алфавиту, как мне нужно.Я уже реализовал методы getTime, getTitle, getComposer, которые извлекают соответствующую информацию из общих строк.Есть ли способ, которым я мог бы сделать это в новом методе, таком как alphabetical, или, что еще лучше, есть способ, которым я мог бы включить его в свой алгоритм быстрой сортировки, чтобы мне больше не приходилось искать в отсортированном массиве?

Спасибо.

Ответы [ 2 ]

7 голосов
/ 27 мая 2011

Вам необходимо изменить компаратор для своего вида, чтобы в случае привязки (равного времени выполнения) он смотрел на заголовок и композитора. См:

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

особенно основной метод:

int compare(Object o1, Object o2) 
2 голосов
/ 27 мая 2011

Удаление дублирующихся элементов в вашем списке - не лучший способ достижения вашей цели.Вместо этого рассмотрите возможность использования либо Comparator (если будет несколько методов сортировки), либо использования в вашем классе MP3File Comparable (если есть только один или явно лучший).

...