集合

集合类似于数组,但是比数组更为灵活,定义集合的语法是:

Dim 集合名称 As New List(Of 数据类型)

例如

Dim Names As New List(Of String)

表示定义了一个字符型(String)集合,集合的名称为Names。

集合的成员包括:

名称 类型 说明
Add 方法 向集合中增加一个值
Insert 方法 向集合的指定位置插入一个值
Remove 方法 删除指定的值
RemoveAt 方法 删除指定位置的值
Contains 方法 判断集合中是否包括某个值
Indexof 方法 返回指定值在集合中的位置,如果集合中不存在该值,则返回-1
LastIndexOf 方法 返回指定值在集合中最后一次出现的位置,如果集合中不存在该值,则返回-1
AddRange 方法 批量增加多个值
ToArray 方法 将集合转换为数组
Clear 方法 清除集合中的所有成员
Sort 方法 对集合中的元素进行排序
Reverse 方法 反转集合中元素的顺序
Count 属性 返回集合中值的个数

可以在定义集合的时候,直接指定初始值,例如:

Dim Names As New List(Of String) From {"苹果", "香蕉", "葡萄"}

在定义了集合之后,我们也可以用Add方法向其中添加值,例如:

Names.Add("电视机")
Names.Add(
"电冰箱")
Names.Add(
"洗衣机")

可以用AddRange方法一次添加多个值,例如:

Names.AddRange({"电视机", "电冰箱", "洗衣机"})

注意被添加的多个值,需要用大括号括起来。

可以用Remove方法删除指定的值,例如:

Names.Remove("电视机")

可以用RemoveAt删除指定位置的值,例如:

Names.RemoveAt(0)

表示删除第一个值。

可以用RemoveRange从指定位置开始删除指定个数的值,例如删除前两个值:

Names.RemoveRange(0, 2)

注意位置编号是从0开始的,RemoveRange的第一个参数0表示第一个值,也就是通第一个值开始删除两个值。

还可以用Insert方法将值插入到指定位置,例如 将"电视机"插入到集合的最前面:

Names.Insert(0,"电视机")

可以用InsertRange方法一次插入多个元素,例如在集合的最前面插入两个值:

Names.InsertRange(0, {"电视机", "洗衣机"})

同样被插入的多个值,要用大括号括起来。

你可以将一个数组或集合的全部值,添加或插入到现有集合中,例如:

Dim Names As New List(Of String)
Dim
nms1() As String = {"电视机", "电冰箱"}
Dim
nms2 As New List(Of String) From {"苹果", "香蕉", "葡萄"}
Names.AddRange(nms1)
Names.InsertRange(2, nms2)
'插入到第三个值的位置

可以用Contains方法判断集合中是否包括某一个对象,例如:

If Names.Contains("电视机")= False Then
    Names.Add("电视机"
)
End If

和数组一样,我们通过索引来引用集合中指定位置的值,例如:

Names(0)
Names(1)

当然也可以改变指定位置的值,例如:

Names(0) = "
微波炉"

可以用集合的Count属性返回集合中值的个数:

Names.Count

下面是一段完整的代码,用于测试集合的基本特性,请复制到命令窗口执行: 

Dim Names As New List(Of String)
Names
.Add( "电视机")
Names
.Add("电冰箱")
Names
.Add("洗衣机")
Names
.Remove("电视机") '删除电视机
If
Names.Contains("电视机")= False Then  '判断集合是否包括"电视机"
    Names.Add("电视机")
End
If
Names
.Insert(0,"传真机") '将"传真机"作为第一个元素插入
Names
(2) = "微波炉" '将第三个元素的值改为"微波炉"
Output
.Show(Names.Count) '显示集合的长度
OutPut
.Show(Names(0)) '显示第一个值
Output
.Show(Names.Indexof("电视机")) '显示电视机在集合中的位置
Names
.Sort() '对集合中的元素排序
Output
.Show(Names.Indexof("电视机")) '显示电视机在集合中的位置
Names
.Reverse() '反转集合中元素的顺序
Output
.Show(Names.Indexof("电视机")) '显示电视机在集合中的位置

用ToArray方法,可以将集合转换为一个数组,例如:

Dim Lst As New List(Of String)
Dim
Arys() As String
Lst.Add(
"电视机")
Lst.Add(
"电冰箱")
Lst.Add(
"洗衣机")
Lst.Remove(
"电视机")
Arys = Lst.ToArray()
'将集合转换为数组
For Each
nm As String In lst
   
Output.Show(nm)
Next


本页地址:http://www.foxtable.com/webhelp/topics/0217.htm