Я считал данные с текстового файла, таким образом, может быть:
John Mary John Leeds
Я теперь должен получить 3 уникальных элемента в ArrayList, потому что существует только 3 уникальных значения в выводе файла (как выше).
Я могу использовать HashTable и добавить информацию к ней, затем просто скопировать ее данные в Список. Есть ли другие решения?
Зачем вам это нужно хранить в Списке
? Вам действительно нужно, чтобы данные были упорядочены или поддерживали поиск на основе индекса?
Я бы предложил хранить данные в Set
. Если порядок не важен, используйте HashSet
. Однако, если вы хотите сохранить порядок, вы можете использовать LinkedHashSet
.
Если у вас есть Список
, содержащий дубликаты, и вы хотите, чтобы Список
без него, вы могли бы сделать:
List<String> newList = new ArrayList<String>(new HashSet<String>(oldList));
То есть обернуть старый список в набор для удаления дубликатов и снова заверните этот набор в список.
Вместо списка используйте набор
. Взгляните сюда: Java Collections Tutorials и особенно на наборы здесь: Учебное пособие по наборам Java
В двух словах, наборы содержат одно из чего-то. Идеально :)
Вы можете проверить list.contains() перед добавлением.
if(!list.contains(value)) {
list.add(value);
}
Я догадывался, что это будет очевидно! Однако добавление элементов в HashSet и последующее создание списка из этого набора было бы более эффективным.