Подтвердить что ты не робот

Нет реализаций Java для массива

Почему Java предоставляет несколько различных реализаций типа Set, включая HashSet и TreeSet и not ArraySet?

4b9b3361

Ответ 1

Набор, основанный исключительно на массиве элементов без особого порядка, всегда будет иметь время O (n) для проверки сдерживания. Это было бы не очень полезно, ИМО. Когда вы захотите использовать это вместо HashSet или TreeSet?

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

Ответ 2

Существует CopyOnWriteArraySet, который представляет собой набор, поддерживаемый массивом.

Это не особенно полезно, так как его производительность не велика для больших коллекций.

Ответ 3

Интерфейс Set не имеет метода get-by-index, такого как List.get(int), поэтому нет необходимости использовать массив с поддержкой массива.

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

Ответ 4

На самом деле конкретная реализация Set не имеет никакого смысла. Любой набор хранит элементы и гарантирует их уникальность. Я не могу быть уверен, но кажется, что вы хотите, чтобы реализация Set сохраняла порядок элементов. Если я правильно использую LinkedHashSet.

Ответ 5

Java предоставляет несколько реализаций своих интерфейсов Collection, которые обеспечивают лучшую производительность. ArrayList работает хорошо во многих операциях List.

Для Set Операции, которые всегда требуют уникальных различных реализаций, обеспечивают лучшую производительность. Если реализовано с использованием массива, любая операция модификации должна выполняться через все элементы массива, чтобы проверить, все ли они в Set. HashSet и TreeSet просто проверяют эту проверку.

Ответ 7

Вы всегда можете реализовать его самостоятельно.... теперь предоставляется там, вероятно, только один чрезвычайно ограниченный случай, когда это было бы полезно (и в этом случае вы могли бы использовать лучшие структуры данных в любом случае), и именно там у вас есть очень большой набор, который почти никогда не меняется, тогда набор массивов будет занимать МНОГИЕ меньше памяти (без дополнительных указателей), и у вас было бы так немного более быстрое перечисление всего набора... Если вы сохраните отсортированный массив, то вы все равно сможете получить O (lg n) времени поиска.

Однако эти различия носят чисто академический характер. В реальном мире вы никогда не захотите такого зверя

Ответ 8

Рассмотрим indexed-tree-map, вы сможете получить доступ к элементам по индексу и получить индекс элементов, сохраняя порядок сортировки. Дубликаты могут быть помещены в массивы как значения под одним и тем же ключом.