Я работаю над программой, которая использует ArrayList
для хранения Strings
. Программа запрашивает у пользователя меню и позволяет пользователю выбрать операцию для выполнения. Такие операции добавляют строки в список, печатают записи и т.д. То, что я хочу сделать, это создать метод под названием removeDuplicates()
. Этот метод будет искать ArrayList
и удалять любые дублированные значения. Я хочу оставить один экземпляр дублированных значений в списке. Я также хочу, чтобы этот метод возвращал общее количество дубликатов.
Я пытаюсь использовать вложенные циклы, чтобы выполнить это, но у меня возникли проблемы, потому что, когда записи удаляются, индексирование ArrayList
изменяется, и все не работает должным образом. Я знаю концептуально, что мне нужно делать, но у меня возникают проблемы с реализацией этой идеи в коде.
Вот несколько псевдокодов:
начать с первой записи; проверьте каждую последующую запись в списке и проверьте, соответствует ли она первой записи; удалите каждую последующую запись в списке, который соответствует первой записи;
после того, как все записи были проверены, перейдите ко второй записи; проверить каждую запись в списке и посмотреть, соответствует ли она второй записи; удалите каждую запись в списке, которая соответствует второй записи;
повторить для записи в списке
Вот код, который у меня есть до сих пор:
public int removeDuplicates()
{
int duplicates = 0;
for ( int i = 0; i < strings.size(); i++ )
{
for ( int j = 0; j < strings.size(); j++ )
{
if ( i == j )
{
// i & j refer to same entry so do nothing
}
else if ( strings.get( j ).equals( strings.get( i ) ) )
{
strings.remove( j );
duplicates++;
}
}
}
return duplicates;
}
UPDATE. Похоже, что Уилл ищет домашнее решение, которое предполагает разработку алгоритма для удаления дубликатов, а не прагматичное решение с использованием Sets. См. Его комментарий:
спасибо для предложений. Это часть задания, и я считаю, что учитель решил, что решение не включает в себя наборы. Другими словами, я должен придумать решение, которое будет искать и удалять дубликаты без реализации HashSet
. Учитель предложил использовать вложенные циклы, которые я пытаюсь сделать, но у меня возникли проблемы с индексированием ArrayList
после удаления определенных записей.