LinkedHashSet или ArrayList - PullRequest
       2

LinkedHashSet или ArrayList

17 голосов
/ 21 августа 2010

Я хочу

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

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

Спасибо.

Ответы [ 4 ]

22 голосов
/ 21 августа 2010

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

5 голосов
/ 21 августа 2010

Используйте LinkedHashSet, если не хотите вставлять дубликаты.

2 голосов
/ 19 июня 2015

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

LinkedHashSet - это то, что вам нужно, потому что это реализация интерфейса Set . У набора есть одна очень крутая привычка: по умолчанию он не допускает дублирования. Итак, мы закончили с вашим 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

2 голосов
/ 21 августа 2010

A LinkedHashSet, кажется, отвечает всем требованиям.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...