Сохраните список уникальных строк в ArrayList

Я считал данные с текстового файла, таким образом, может быть:

John
Mary
John
Leeds

Я теперь должен получить 3 уникальных элемента в ArrayList, потому что существует только 3 уникальных значения в выводе файла (как выше).

Я могу использовать HashTable и добавить информацию к ней, затем просто скопировать ее данные в Список. Есть ли другие решения?

37
задан Jim 16 June 2013 в 07:45
поделиться

4 ответа

Зачем вам это нужно хранить в Списке ? Вам действительно нужно, чтобы данные были упорядочены или поддерживали поиск на основе индекса?

Я бы предложил хранить данные в Set . Если порядок не важен, используйте HashSet . Однако, если вы хотите сохранить порядок, вы можете использовать LinkedHashSet .

76
ответ дан 27 November 2019 в 04:01
поделиться

Если у вас есть Список , содержащий дубликаты, и вы хотите, чтобы Список без него, вы могли бы сделать:

List<String> newList = new ArrayList<String>(new HashSet<String>(oldList));

То есть обернуть старый список в набор для удаления дубликатов и снова заверните этот набор в список.

67
ответ дан 27 November 2019 в 04:01
поделиться

Вместо списка используйте набор . Взгляните сюда: Java Collections Tutorials и особенно на наборы здесь: Учебное пособие по наборам Java

В двух словах, наборы содержат одно из чего-то. Идеально :)

4
ответ дан 27 November 2019 в 04:01
поделиться

Вы можете проверить list.contains() перед добавлением.

if(!list.contains(value)) {
    list.add(value);
}

Я догадывался, что это будет очевидно! Однако добавление элементов в HashSet и последующее создание списка из этого набора было бы более эффективным.

17
ответ дан 27 November 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: