Отсортированный набор в Java

Позвольте мне переписать ваш вопрос. поэтому вы можете увидеть тему с другой точки зрения.

Когда мне нужно представлять футбольную команду, я понимаю, что это в основном имя. Например: «The Eagles»

string team = new string();

Затем я понял, что в командах также есть игроки.

Почему я не могу просто расширить строковый тип, чтобы он также содержал список игроков?

Ваша точка входа в проблему произвольна. Попытайтесь подумать, что делает команда (свойства), а не то, что она .

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

160
задан b4hand 14 May 2015 в 21:15
поделиться

6 ответов

Существует несколько опций. Я предложил бы TreeSet, если Вы не хотите дубликаты и объекты, Вы вставляете, сопоставимы.

можно также использовать статические методы класса Наборов сделать это.

См. Collections#sort (java.util. Список) и TreeSet для большего количества информации

12
ответ дан Janus Troelsen 23 November 2019 в 21:30
поделиться

Если Вы просто хотите отсортировать список, используйте любой вид Список и используйте Collections.sort () . Если Вы хотите удостовериться, что элементы в списке уникальны и всегда сортируемые, используют SortedSet.

10
ответ дан Guillaume 23 November 2019 в 21:30
поделиться

Вы хотите эти реализации SortedSet , а именно, TreeSet.

12
ответ дан cletus 23 November 2019 в 21:30
поделиться

TreeMap и TreeSet дадут Вам повторение по содержанию в отсортированном порядке. Или Вы могли использовать ArrayList и использовать Collections.sort () для сортировки его. Все те классы находятся в java.util

53
ответ дан Michael Borgwardt 23 November 2019 в 21:30
поделиться

Если Вы хотите вести отсортированный список , который Вы будете часто изменять (т.е. структура, который, в дополнение к тому, чтобы быть отсортированным, позволить дубликаты и на чьи элементы может эффективно сослаться индекс), то используйте ArrayList, но когда необходимо вставить элемент, всегда используйте Collections.binarySearch () для определения индекса , в котором Вы добавляете данный элемент. Последний метод говорит Вам индекс, в котором необходимо вставить сохранить список в отсортированном порядке.

32
ответ дан Neil Coffey 23 November 2019 в 21:30
поделиться

Это происходит очень поздно, но в JDK есть класс только для того, чтобы иметь отсортированный список. Он называется (несколько не по порядку с другими интерфейсами Sorted * ) « java.util.PriorityQueue ». Он может сортировать либо Comparable s, либо использовать Comparator .

Разница со списком List , отсортированным с использованием Collections.sort (...) , заключается в том, что он всегда будет поддерживать частичный порядок с O (log (n)) производительность вставки с использованием структуры данных кучи, тогда как вставка в отсортированный ArrayList будет O (n) (т. е. с использованием двоичного поиска и перемещения).

Однако, в отличие от списка , PriorityQueue не поддерживает индексированный доступ ( get (5) ), единственный способ доступа к элементам в куча предназначена для их удаления по одному (отсюда и имя PriorityQueue ).

185
ответ дан 23 November 2019 в 21:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: