LinkedHashSet или ArrayList

Я хочу

  • Избегайте дублирования вставляемого элемента.
  • Когда я повторяю класс коллекции, возвращаемый элемент совпадает с порядком вставки.

Могу ли я узнать, что я должен рассмотреть, чтобы выбрать ArrayList (явно выполнить проверку перед вставкой) или LinkedHashSet?

Спасибо.

Ответы

Ответ 1

Определенно использовать LinkedHashSet. Это сделано для того, что вам нужно. Поиск всего массива ArrayList каждый раз, когда вам нужно что-то вставлять, будет выполняться убийца производительности (O (n) каждый раз))

Ответ 2

Используйте LinkedHashSet, если вы не хотите вставлять повторяющиеся элементы.

Ответ 3

A LinkedHashSet, кажется, идеально подходит для счета.

Когда вы создаете свои собственные объекты и планируете использовать их в коллекции типа LinkedHashSet здесь. Не забудьте переопределить как equals, так и hashcode для элемента, который вы собираетесь хранить в нем.

Ответ 4

Пожалуйста, проверьте это: http://wiki3.cosc.canterbury.ac.nz/images/e/e9/JavaCollections.png

LinkedHashSet - это то, что вам нужно, потому что это реализация интерфейса Установить. У набора есть одна очень крутая привычка: она не позволяет дублировать по умолчанию. Итак, мы закончили с вашим 1.

Как насчет 2? Мы знаем, что нам нужна одна из реализации Set, но которая?

HashMap - вы можете хранить пары K, V, но нет порядка.

TreeSet - это самое медленное решение, потому что оно использует метод compareTo для сохранения и упорядочения каждого элемента. Вот почему вы можете передать ему компаратор, когда вы строите TreeSet.

LinkedHashSet. Возвращает элементы в порядке их вставки. Это упорядоченная версия HashSet.

Здесь вы найдете отличное описание: http://java67.blogspot.co.uk/2014/01/when-to-use-linkedhashset-vs-treeset-vs-hashset-java.html?_sm_au_=iVVMtMLHSDQ5P0P7