/** Return a list of all items in L that appear more than once.
* Each item appears once in the result.
*/
static List<String> duplicates(List<String> L) {
ArrayList<String> result = new ArrayList<String>();
int n;
n = 0;
for (ListIterator<String> p1 = L.listIterator(); p1.hasNext();
n += 1) {
String x = p1.next();
if (result.contains(x)) {
continue;
}
int m;
m = L.size() - 1;
for (ListIterator<String> p2 = L.listIterator(L.size());
m > n; m -= 1) {
if (x.equals(p2.previous())) {
result.add(x);
break;
}
}
}
Collections.sort(result);
return result;
}
Я пытаюсь пересмотреть этот код, чтобы не использовать другие переменные, кроме результата p1 и p2. Это то, что у меня есть на данный момент, но я довольно потерял работу над этим.Использование ListIterator для удаления дубликатов
ListIterator<String> p1 = L.listIterator();
while (p1.hasNext()) {
String x = p1.next();
if result.contains(x)) {
continue;
}
Вы хотите удалить дубликаты или вернуть список с дублируемыми значениями? – Averroes
Я хочу удалить все дубликаты. Результатом должен быть список слов (String), находящихся в файлах, за вычетом дубликатов. –