数组和arraylist集合

一,数组概述
何谓数组?首先,我们要从组看起.一组,就是一行或者一列,数组,也就是说有数行或数列,而从微软的解释上来看,数组是属于立体概念的.也就是说,数组是像动画片一样,有一维动画,二维动画,还有现在的三维动画.我想在维数上面大家在看动画片的时候就能有深刻的理解了.这个是算比较通俗的理解了.
下面咱们再来看看程序上对数组的概括: 数组(Arrays),可以用相同名字引用一系列变量,并用数字(索引)来识别它们.由此可见数组是有编号可言的,这就像一个班集体一样,每个人都有自己的学号..
总体来说,数组就是一组带有索引的容器,相当于一间教室的位置,而上面已经编好了座位号.
二, 数组的声明
在vb.net中,所有的数组都是以“0”为起始长度的,也就是说,所有数组的起点都是0,位置0也代表一个容器.如果一个数组定义为Dim x(10) As Single,那么它是可以存储10个Single的变量的.这样的数组含有10个元素,编号为0到9,使我们在处理数组的长度和编号的情况与C、C++、C#和Java具有一致性,如下例:
Dim Max As Integer
Max=10
Dim x(Max)
For j=0 to Max-1
x(j)=j
Next j
从上面例子可以看出,数组的最后一个元素的编号,总是数组的长度减1。
那么怎样定义一个多维数组呢? 如下例:
二维数组
Dim x(m,z) As String
‘那么它的容器是怎么分配呢?
Dim I As Integer = 0
Dim j As Integer = 0
For I =0 to m-1
For j = 0 to z-1
X(I,j)=I+j ‘我们可以试试计算有多少个这样的位数,结果为m*z的积
Next
Next
上面的例子可以充分的看出数组的立体性,以及可延伸性,当然如果你有需求,还可以定义三维的数组,四维的数组,在理论上来讲,是可以无限制的延伸下去.当然,前提条件是你有需求.例如我们定义一个三维数组:Dim x(5,6,8) as string 等等…
三,数组长度的控制及动态数组
此外,vb.net还引进了一个数组列表(ArrayList)对象来代替原来的集合(Collection)对象,集合对象的长度计数总是从1开始的,而且在需要的时候,数组列表的长度可以是不定的。数组列表的基本的方法和集合一样,只不过它还具有一些新的功能方法。
例如:
Dim Arl As ArrayList '构建一个数组列表
For j=0 to 10
Arl.Add(j)
Next j
所有的数组变量都有一个长度属性,这样就可以得知这个数组有多大:
Dim Z(20) As Single
Dim j As Integer
For j=0 to z.Length-1
Z(j)=j
Next j
在vb.net中所有的数组都是动态的,可以在任何时候重新定义数组的长度,然而,在vb.net中已经没有ReDim Preserve表述了,可以使用New关键字来对任何一个数组进行引用,并且重新定位:
'在类模块级声明
Dim X() As Single
'重新定位
X=New Single(20){}
注意:数组类型后面的大括号不要忘记写。
和集合对象一样,数组列表含有一个“Count”属性和一个“Item”属性,允许使用“index”来访问数组列表中的元素。而且,和集合对象一样,这个属性也可以省略,感觉就像操作数组一样:
For i=0 to ar.Count-1
textbox1.text=(ar.Item(i))
textbox2.text= (ar(i))
Next I
下表为数组列表的一些方法:
Clear 清空数组列表的内容
Contains(object) 如果数组列表含有该对象则返回true
CopyTo(array) 把一个数组列表拷贝到一个一维的数组中去
IndexOf(object) 返回第一个元素的值
Insert(index,object) 在指定的位置插入一个元素
Remove(object) 把一个元素从列表中删除
RemoveAt(index) 把一个指定位置的元素从列表中删除
Sort 对列表进行排序
注意:一个数组中的所有元素具有相同的数据类型。当然,当数据类型为“object”时,各个元素能够包含不同种类的数据(对象、字符串、数值等)。可以声明任何基本数据类型的数组,包括用户自定义的类型和对象变量。此外,数组在vb.net中已经是完全的动态的了。
Viviwei编写
版权由Viviwei所有
交流QICQ:85474440
E-Mail:wei01062003@yahoo.com.cn


   本人博客的文章大部分来自网络转载,因为时间的关系,没有写明转载出处和作者。所以在些郑重的说明:文章只限交流,版权归作者。谢谢

原文地址:https://www.cnblogs.com/wzg0319/p/1341542.html