Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Array vs Object vs Dictionary vs Vector (http://www.flasher.ru/forum/showthread.php?t=189917)

NAO111 18.12.2012 10:24

Array vs Object vs Dictionary vs Vector
 
Доброго времени суток! ActionScript 3 изучаю недавно, вот обнаружил, что язык ActionScript 3 имеет 4 типа коллекций - Array, Object, Dictionary, Vector. Поскольку опыта у меня мало, хотелось бы узнать мнение опытных - какой тип коллекции и когда лучше использовать.
Спасибо!

dimarik 18.12.2012 10:27

Это резюме в Яндекс. Я бы вас пока не брал туда )

NAO111 18.12.2012 10:29

Да, вы правы. Но я туда и не собираюсь) Но всё-же, произошло стечение обстоятельств - совсем недавно я задумался над этим вопросом и вчера увидел подобный на Яндексе - стало еще интереснее)

Tails 18.12.2012 10:31

Array - динамический тип данных. Обращение к данным по индексу.
Object - динамический тип данных, Обращение к данным по строковому идентификатору.
Vector - данные могут быть только одного типа, обращение по индексу. Более быстрый чем остальные.

NAO111 18.12.2012 10:34

А Dictionary еще быстрее всех перечисленных. И доступ туда по объектам. Это всё почти "определения". Но, когда лучше какой использовать...

Tails 18.12.2012 10:40

Ну как-бы, из определения и следует, когда и какой нужно использовать.

Нужно хранить разные типы данных - Array. Карту игрового мира 150x150 с постоянными обращениями - Vector

NAO111 18.12.2012 10:47

С Вектором всё понятно. А вот хранить разные типы данных - можно использовать Array, Dictionary, Object.
Допустим у меня есть класс User:
Код AS3:

User
{
  public var id:String;
  public var name:String
}

Чтобы хранить пачку таких юзеров я могу использовать следующее:
Код AS3:

var user1:User = new User();
var user2:User = new User();
var arr:Array = [user1, user2];
var obj:Object = {user1.id:user1, user2.id:user2};
var dict:Dictionary = new Dictionary();
dict[user1.id] = user1;
dict[user2.id] = user2;

Да и вектор сюда тоже вполне подойдет.

Что лучше? =)

kackbip 18.12.2012 11:08

Как я понял по последним дебатам местных профессионалов. Имеет смысл использовать только Vector и Dictionary.
Object это вобще не коллекция.
Array же уступает в быстродействии вектору.

NAO111 18.12.2012 11:24

Array отметается, Согласен - неудобно, да и не нужно, раз есть Vector.
Что касается Object - может это и не коллекция, дело не в терминологии, но хранить свойства он позволяет и использовать его можно с тем же успехом, что и Dictionary. Только у Dictionary скорость доступа к данным по ключу быстрее чем у Object. Ввиду скорости - предпочтении остается за Dictionary. А если скорость не учитывать, а учитывать лишь удобство использования (переборы, сортировка, заполнение и пр.)

GBee 18.12.2012 11:56

Цитата:

Только у Dictionary скорость доступа к данным по ключу быстрее чем у Object
Можно пруфы?

Цитата:

Что касается Object - может это и не коллекция, дело не в терминологии, но хранить свойства он позволяет и использовать его можно с тем же успехом, что и Dictionary.
В словаре в качестве ключа может быть объект.

Вектор проигрывает массиву в универсальности.

Короче по обстоятельствам надо использовать. Я люблю массив и объект вкупе. Массив для массовых операций, объект, как хеш для быстрого доступа к конкретному элементу по ключу.


Часовой пояс GMT +4, время: 08:07.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.