Позвольте мне переписать ваш вопрос. поэтому вы можете увидеть тему с другой точки зрения.
Когда мне нужно представлять футбольную команду, я понимаю, что это в основном имя. Например: «The Eagles»
string team = new string();
Затем я понял, что в командах также есть игроки.
Почему я не могу просто расширить строковый тип, чтобы он также содержал список игроков?
Ваша точка входа в проблему произвольна. Попытайтесь подумать, что делает команда (свойства), а не то, что она .
После этого вы можете увидеть, разделяет ли он свойства с другими классами. И подумайте о наследовании.
Существует несколько опций. Я предложил бы TreeSet, если Вы не хотите дубликаты и объекты, Вы вставляете, сопоставимы.
можно также использовать статические методы класса Наборов сделать это.
См. Collections#sort (java.util. Список) и TreeSet для большего количества информации
Если Вы просто хотите отсортировать список, используйте любой вид Список и используйте Collections.sort () . Если Вы хотите удостовериться, что элементы в списке уникальны и всегда сортируемые, используют SortedSet.
Вы хотите эти реализации SortedSet , а именно, TreeSet.
TreeMap и TreeSet дадут Вам повторение по содержанию в отсортированном порядке. Или Вы могли использовать ArrayList и использовать Collections.sort () для сортировки его. Все те классы находятся в java.util
Если Вы хотите вести отсортированный список , который Вы будете часто изменять (т.е. структура, который, в дополнение к тому, чтобы быть отсортированным, позволить дубликаты и на чьи элементы может эффективно сослаться индекс), то используйте ArrayList, но когда необходимо вставить элемент, всегда используйте Collections.binarySearch () для определения индекса , в котором Вы добавляете данный элемент. Последний метод говорит Вам индекс, в котором необходимо вставить сохранить список в отсортированном порядке.
Это происходит очень поздно, но в JDK есть класс только для того, чтобы иметь отсортированный список. Он называется (несколько не по порядку с другими интерфейсами Sorted *
) « java.util.PriorityQueue
». Он может сортировать либо Comparable >
s, либо использовать Comparator
.
Разница со списком List
, отсортированным с использованием Collections.sort (...)
, заключается в том, что он всегда будет поддерживать частичный порядок с O (log (n)) производительность вставки с использованием структуры данных кучи, тогда как вставка в отсортированный ArrayList
будет O (n) (т. е. с использованием двоичного поиска и перемещения).
Однако, в отличие от списка
, PriorityQueue
не поддерживает индексированный доступ ( get (5)
), единственный способ доступа к элементам в куча предназначена для их удаления по одному (отсюда и имя PriorityQueue
).