示例5.13 创建和使用交错形的数组
//声明对Int32的交错数组的引用
Int[][] matrix;
//分配3个元素的数组
Matrix=new int[3][];
//分配3个包含4个元素的子数组
Matrix[0]=new int[4];
Matrix[1]=new int[4];
Matrix[2]=new int[4];
//依次遍历所有的元素
For(int i=0;i<matrix.Length;++i)
For(int j=0;j<matrix[i].Length;++j)
Matrix[i][j]=(i+1)*(j+1)
数组支持一套运算的通用集合。在基本访问器方法(如示倒5.11所示)之外,数组还支持块拷贝操作(如示例5.14所示)。尤其是Copy方法支持将一个数组中的某个范围的元素拷贝到另一个数组中。示例5.15展示了这些方法的用法。
示例5.14 System.Array(节选2)
Namespace System{
Public class Array{
//拷贝描述符+元素
Object Clone();
//质元素
Static void Copy(Array source,Array dest,int nElems);
Static void Copy(Array source,int sourceOffset,Array dest,int sourceOffset,int nElems);
//清除(零或者null)元素
Static void Clear(Array source,int initialIndex,int nElems);
}
}
示例5.15 使用System.Array
Void Main()
{
Int[] left={1,2,3,4,5,6};
Array.Clear={left,3,2};
//left=={1,2,3,0,0,6}
Array.Copy(left,0,left,3,2)
//left=={1,2,3,1,2,6}
}
只有当数组的元素支持Icomparable
接口时,System.Array类型的几种方法才可以应用。示例5.16列出了这些方法。从技术上讲,Array.IndexOf和Array.LastindexOf需要元素以一种有意义的方式实现Equals力法。示例5.17列举了IndexOf和BinarySearch。尽管BinarySearch力法要求数组已经被排好序,但它执行的时间只是O(log(n)),明显优于IndexOf所需的时间O(n)。
示例5.16 System.Array(节选3)
Namespace System{
Public class Array{
//使用Object.Equals进行线性查找(如果没有找到,返回-1)
Static int IndexOf(Array array,Object value);
Static int LastIndexOf(Array arry,Object Value);
//通过IComparable对元素进行排序
Static void Sort(Array array);
//将元素进行反序排列
Static void Reverse(Array array);
//对一个排好序的数组进行折半查找
//如果没有找到,返回下一个最大值的索引的负值
Static int BinarySearch(Array array,Object value);
}
}
示例5.17 使用System.Array(回顾)
Void Main()
{
Int[] values{0,2,4,6,8,10,12};
Int index=Array.IndexOf(values,6); //返回3
Index=Array.BinarySearch(values,6); //返回3
Index=Array.IndexOf(values 7); //返回-1
Index=Array.BinarySearch(values,7); //返回-4
}
{