J'entame un petit package 'data' qui contiendra différentes structures de données parfois bien utiles. L'idée m'est venue du besoin d'une HashTable, que j'avais eu l'occasion de manipuler durant mes quelques aventures avec Java. J'en ai ainsi profité pour refaire la classe Grid que vous connaissez déjà peut-être ...

Pour ceux qui n'ont pas la chance de la connaitre, la classe HashTable correspond à l'utilisation d'un tableau, sauf que les clés n'ont pas de contrainte et peuvent être de n'importe quel type, contrairement au tableau qui a besoin de clés numériques, ou au tableau associatif qui a besoin de clés alphanumériques. Il s'agit donc d'un "simple" système d'association clés/valeurs.
import com.lalex.data.*;
var ht:HashTable = new HashTable();
var k1 = new Date();
var k2 = ["un", "tableau", "comme", "clé"];
ht.put("clé", "valeur");
ht.put(k1, "date");
ht.put(k2, ["un", "tableau", "comme", "valeur"]);
trace(ht);
/** Sortie
[ clé => valeur
  Sat Oct 9 14:14:53 GMT+0200 2004 => date
  un,tableau,comme,clé => un,tableau,comme,valeur ]
*/

// Récupère un élément
trace("k2 : " + ht.get(k2));
/** Sortie
k2 : un,tableau,comme,valeur
*/

// Supprime un élément
ht.remove(k2);
trace(ht);
/** Sortie
[ clé => valeur
  Sat Oct 9 14:14:53 GMT+0200 2004 => date ]
*/
La classe Grid, quant à elle, est un simple tableau à deux dimensions, agrémenté de quelques méthodes assez pratiques. ;)import com.lalex.data.*;
var gr:Grid = new Grid(2,3);
gr.fill(1,2,3,4,5,6);
trace(gr);
/** Sortie
[[1 , 2]
 [3 , 4]
 [5 , 6]]
*/

// Inverse la grille
gr.reverse();
trace(gr);
/** Sortie
[[1 , 3 , 5]
 [2 , 4 , 6]]
*/

// Met tous les éléments de la grille au carré
gr.map(function(n) { return n*n; });
trace(gr);
/** Sortie
[[1 , 9 , 25]
 [4 , 16 , 36]]
*/

::Télecharger data.zip::