集合
集合类似于数组,但是比数组更为灵活,定义集合的语法是:
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(
"电视机")可以用AddRange方法一次添加多个值,例如:
Names.AddRange({"电视机", "电冰箱", "洗衣机"})
注意被添加的多个值,需要用大括号括起来。
可以用Remove方法删除指定的值,例如:
Names.Remove(
"电视机")可以用RemoveAt删除指定位置的值,例如:
Names.RemoveAt(0)
表示删除第一个值。
可以用RemoveRange从指定位置开始删除指定个数的值,例如删除前两个值:
Names.RemoveRange(0, 2)
注意位置编号是从0开始的,RemoveRange的第一个参数0表示第一个值,也就是通第一个值开始删除两个值。
还可以用Insert方法将值插入到指定位置,例如 将"电视机"插入到集合的最前面:
Names.Insert(
0,"电视机")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(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