Как мне удалить повторяющиеся элементы из ArrayList?
У меня есть ArrayList<String>, и я хочу удалить из него повторяющиеся строки. Как я могу это сделать?
Переведено автоматически
Ответ 1
Если вы не хотите дубликатов в a Collection, вам следует подумать, почему вы используете a, Collection который допускает дубликаты. Самый простой способ удалить повторяющиеся элементы - добавить содержимое в Set (что не допускает дубликатов), а затем добавить Set обратно в ArrayList:
Set<String> set = newHashSet<>(yourList); yourList.clear(); yourList.addAll(set);
Конечно, это нарушает порядок элементов в ArrayList.
Ответ 2
Хотя преобразование ArrayList в HashSet эффективно удаляет дубликаты, если вам нужно сохранить порядок вставки, я бы предпочел предложить вам использовать этот вариант
// list is some List of Strings Set<String> s = newLinkedHashSet<>(list);
Затем, если вам нужно получить обратно List ссылку, вы можете снова использовать конструктор преобразования.
Примечание: В случае, если мы хотим собрать результат в конкретной реализации списка, напримерLinkedList, мы можем изменить приведенный выше пример следующим образом:
Мы можем использовать parallelStream также в приведенном выше коде, но это не всегда может дать ожидаемый прирост производительности. Подробнее читайте в этом вопросе.