Пожалуйста, проверьте это:
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