Matriz asociativa con int como clave

En mi aplicación quiero tener un diccionario donde la clave sea un número entero.

Como es un número entero, uso normal Array :

var arr : Array = [];
arr[5] =  anObject;
arr[82] =  anOtherObject;

Cuando itero con for each, no hay problema, itera a través de esos 2 objetos. El problema es ese arr.length devuelve 83... Así que tengo que crear una variable que cuente el número a medida que modifico la matriz.

Pregunta 1: ¿Existe una mejor práctica para eso (IE: matriz asociativa con int como clave)? Dudé en usar un diccionario.

Pregunta 2: ¿Flash asigna memoria para los cubos no utilizados de la matriz?

preguntado el 04 de julio de 12 a las 09:07

Lo siento, está fuera del alcance, sé cómo calcular el tamaño de una matriz asociativa... Esa no es mi pregunta... Mi pregunta es cómo lidiar con asociativas con un int como clave, ya que podemos usarlas con Array. -

Exacto y esas preguntas contienen tu respuesta. Básicamente, Array, Object o Dictionary se pueden usar para lograr lo mismo. Una matriz dispersa asociativa. -

Si dije "Dudé en usar un Diccionario", significa que conocía esta solución pero no puedo descifrar cuál es la mejor solución. La solución del objeto definitivamente no es relevante para mi problema. Es por eso que pedí una mejor práctica, no enlaces sobre cómo usar el Diccionario... -

1 Respuestas

Las matrices en flash son escasas (a diferencia de Vector), por lo que no se asignarán las entradas vacías. Si necesita saber la longitud, probablemente deba realizar un seguimiento manual (quizás hacer una clase contenedora).

Adobe dice:

Las matrices son matrices dispersas, lo que significa que puede haber un elemento en el índice 0 y otro en el índice 5, pero nada en las posiciones de índice entre esos dos elementos. En tal caso, los elementos en las posiciones 1 a 4 no están definidos, lo que indica la ausencia de un elemento, no necesariamente la presencia de un elemento con el valor indefinido.

Respondido 04 Jul 12, 09:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.