|
Modus ponens
модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
|
Массивы и векторы - это коллекции в которых разрешены повторения. С точки зрения использования, асимптотическая сложность чтения и записи: O(1), в определенных случаях возможна сортировка. Если сортировка возможна, то ее асимптотичекая сложность: O(n log n). В массивах и векторах, если их можно линейно упорядочить, поиск элемента возможен с асимптотической сложностью O(log n) (т.н. бинарный поиск).
Удаление или добавление из/к таких/м коллекций/ям, это O(n) операция (т.как нужно копировать всю коллекцию).
Массивы отличаются от векторов тем, что не декларируют тип элементов.
Типы векторов в AS3 не совместимы по присваиванию. Это значит, что Vector.<EventDispatcher> не является под-типом Vector.<Object>, тем не менее есть тип, которому принадлежат все векторы: Vector.<*>.
Кроме этого есть много деталей реализации, которые делают теорию не такой простой и однозначной. Но для краткости, не будем вдаваться в подробности.
Хеш-таблицы - это коллекции в которых запрещены повторения. Асимптотическая сложность чтения, записи, удаления и добавления - O(1). Хеш-таблицы по-определению не сортируются, зато поиск в них - опять же, O(1).
Object - не смотря на то, что во многих отношениях ведет себя как хеш-таблица с ключами строкового типа, на самом деле не совсем хеш таблица. Т.как AS3 не различает на уровне синтаксиса вызов метода специализирующегося на каком-то типе и попытку получить значение по ключу из хеш-таблицы, некоторые ключи в Object просто нельзя положить (т.как они совпадают с уже существующими методами).
Dictionary - позволяет использовать произвольные объекты в качестве ключей (в отличие от Object, где это только строки). Но обладает все теми же недостатками. Кроме того, в виду тех же недостатков синтаксиса, изза которых нельзя отличить вызов собственного метода от поиска значения по ключу, хранение ключей примитивных типов в Dictionary работает следующим образом: сначала простые типы конвертируются в строку, а потом хранятся отдельно от ссылочных типов. И, хотя, часто разницей можно принебречь, это может привести к ошибкам приведения типов, которые тяжело обнаружить.
__________________
Hell is the possibility of sanity
|