Array Vector 数组

package
{
 import flash.display.Sprite;
 
 public class demo1 extends Sprite
 {
  /**Array索引数组array*/
  private var array:Array;
  /**Vector 索引数组array2*/
  private var array2:Vector.<int>;
  /**Vector 索引数组array3*/
  private var array3:Vector.<int>;
  /**Vector 索引数组array4*/
  private var array4:Vector.<int>;
  /**Vector 索引数组array5*/
  private var array5:Vector.<int>;
  /**Vector 索引数组array6*/
  private var array6:Vector.<int>;
  /**关联数组*/
  private var array7:Array;
  public function demo1()
  {
   //创建Array 索引数组 不限制类型
   array = new Array(7);
   array[0] = 0;
   array[1] = 1;
   array[2] = 2;
   array[3] = 3;
   array[4] = 4;
   array[5] = 5;
   array[6] = 6;
   array.push(1);
   for(var i:int = 0;i<array.length;i++){
    trace(array[i]);
   }
   
   //delete 数组元素 只会把数组元素值修改成 undefined 不会删除这个元素 数组的长度不变
   delete array[1];
   trace(array[1]);
   trace(array.length);
   for(var j:int = 0;j<array.length;j++){
    trace(array[j]);
   }
   
   //修改 数组长度 会截断数组或增长数组 从而删除元素 或增加元素
   array.length = 10;
   for(var w:int = 0;w<array.length;w++){
    trace(array[w]);
   }
   
   //创建Vector 索引数组 限制类型 为 int
   array2 = new Vector.<int>;
   array2.push(1);
   array2.push(2);
   trace(array2[1]);
   
   //创建Vector 索引数组 限制类型为 int 数组预知长度 7
   array3 = new Vector.<int>(7);
   array3.push(8);
   for(var ii:int = 0;ii<array3.length;ii++){
    trace(array3[ii]);
   }
   
   //创建Vector 索引数组 限制类型为 int 数组预知长度 7 数组长度 限制 true 固定长度
   array4 = new Vector.<int>(1,true);
   array4[0] = 1;
   array4[0]= 2; //可以赋值和修改 内容 不可增加元素 因为长度已经固定
   trace(array4[0]);
   
   //创建Vector 索引数组 文本语法方式
   array5 = new <int>[1,2,3,4,5,6,7,8];
   trace(array5[array5.length-1]);
   
   //创建Vector 索引数组 Vector.<T>()全局函数返回方式
   array6 = Vector.<int>([1,2,3,4,5,6,7,8,9]);
   trace(array6[0]);
   
   //关联数组
   array7 = new Array();
   array7["one"] = "one";
   array7["two"] = "two";
   array7.three = "three";
   trace(array7[1]); //用 Array 创建 键值关联数组 无法用 索引来访问数组 打印结果 undefined
   trace(array7["three"]); //只能用 键来访问
   
   //另一种关联数组  object 对象
   var obj:Object = new Object();
   obj.one = "one";
   obj["two"] = "two";
   trace(obj["one"]);
   trace(obj.two);
  }
  /**深度复制的原因
  Array 类不具有复制数组的内置方法。通过调用不带参数的 concat() 或 slice() 方法,可以创建数组的“ 浅副本”。在浅副本中,
  如果原始数组具有对象元素,则仅复制指向对象的引用而非对象本身。与原始数组一样,副本也指向相同的对象。对对象所做
  的任何更改都会在两个数组中反映出来。
  在“ 深副本” 中,还将复制原始数组中的所有对象,从而使新数组和原始数组指向不同的对象。深度复制需要多行代码,通常
  需要创建函数。可以将此类函数作为全局实用程序函数或 Array 子类的方法来进行创建*/
  /**深度复制数组方法*/
  import flash.utils.ByteArray;
  private function clone(source:Object):*
  {
   var myBA:ByteArray = new ByteArray();
   myBA.writeObject(source);
   myBA.position = 0;
   return(myBA.readObject());
  }
 }
}

posted @ 2011-09-01 17:39  rob_2010  阅读(288)  评论(0编辑  收藏  举报