Java: список, содержащий уникальные элементы по порядку - PullRequest
20 голосов
/ 28 октября 2011

Есть ли тип списка в java, который хранит объекты в порядке возрастания и не добавляет, если этот объект был добавлен ранее.Я знаю, что Java-карты могут это сделать, но мне интересно, есть ли тип списка, который делает то, что я хочу.В противном случае я должен переопределить содержит, equalsTo и добавить методы, верно?

Ответы [ 8 ]

38 голосов
/ 28 октября 2011

Так вам нужен список, содержащий только уникальные элементы?Два варианта:

  • java.util.LinkedHashSet - сохраняет порядок вставки, имеет заданную семантику
  • из общих коллекций SetUniquieList - позволяет выполнять операции со списками, напримерget(..) и set(..)
  • из общих фондов ListOrderedSet
14 голосов
/ 28 октября 2011

Зависит от того, какой порядок вы имеете в виду.

  • Порядок сортировки - используйте TreeSet
  • Порядок вставки - используйте LinkedHashSet
4 голосов
/ 28 октября 2011

Я думаю, что вы после SortedSet (это интерфейс, который расширяет Set). Набор подобен списку, но содержит только одно значение.

TreeSet - это широко используемая реализация SortedSet

http://download.oracle.com/javase/6/docs/api/java/util/TreeSet.html

4 голосов
/ 28 октября 2011

TreeSet сделает свое дело. Пример:

SortedSet<Integer> myOrderedUniqueList = new TreeSet<Integer>()

1 голос
/ 28 октября 2011

TreeSet может быть именно то, что вам нужно.

Хранит элементы в отсортированном дереве. Таким образом, вы можете перебирать их в отсортированном порядке. Это не список, но он работает лучше в отношении добавления и содержит.

0 голосов
/ 13 марта 2017

SortedSet - это подинтерфейс Set, который гарантирует, что элементы в наборе отсортированы.

SortedSet<Integer> orderedSet = new TreeSet<Integer>();

Используйте их, когда вам нужно хранить неповторяющиеся элементы в порядке возрастания значений элементов

0 голосов
/ 20 ноября 2015

Используйте java.util.LinkedHashSet с переопределенными hashCode () и equals (Object obj), используя уникальное свойство (я)

0 голосов
/ 28 октября 2011

Это не список, но вы можете посмотреть на реализации Set http://download.oracle.com/javase/6/docs/api/java/util/Set.html

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