Associative arrays: Array or Object?

Dear all,

I am having a confusing night with Associative Arrays in Flash CS3. For example I wrote these lines:

var listMC: Array = new Array ();

listMC["0"] = "instance0";
listMC["1"] = "instance1";
listMC["2"] = "instance2";
listMC["3"] = "instance6";
listMC["6"] = "instance8";
listMC["7"] = "instance5";

trace(listMC.length);

Result/ 8

Why 8? It seems flash assumes that it has to take into account those missing numbers (4,5). If I use a loop to see the content of the array I got:

instance0,instance1,instance2,instance6,,,instance8,instance5

This confirms the assumption. And if I use:

listMC["id0"] = "instance0";
listMC["id1"] = "instance1";
listMC["id2"] = "instance2";
listMC["id3"] = "instance6";
listMC["id6"] = "instance8";
listMC["id7"] = "instance5";

trace(listMC.length);

Result/ 0

No idea why!!!

So, I tried using objects and I got

var listMC: Object = new Object ();

listMC["0"] = "instance0";
listMC["1"] = "instance1";
listMC["2"] = "instance2";
listMC["3"] = "instance6";
listMC["6"] = "instance8";
listMC["7"] = "instance5";
  
trace(listMC.length);

Result/ undefined

Not lucky again

A light in this world of darkness?

Thanks in advance