Previous topicNext topic
Help > 开发指南 > 编程基础 > 数据处理 >
集合

List

数组最适用于创建和使用固定数量的强类型化对象。它在内存中是顺序连续存储的,所以它的索引速度非常快,赋值与修改元素也很简单;而集合提供更灵活的方式来使用对象组。 与数组不同,你使用的对象组随着应用程序更改的需要动态地放大和缩小。 对于某些集合,你可以为放入集合中的任何对象分配一个密钥,这样你便可以使用该密钥快速检索此对象。

名称 类型 说明
Add 方法 向集合中增加一个元素
AddRange 方法 批量增加元素
Clear 方法 清楚所有元素
Contains 方法 查询是否包含某个元素
CopyTo 方法 复制元素到集合
IndexOf 方法 返回指定元素在集合中的位置,如果集合中不存在该元素,则返回-1
Insert 方法 向集合的指定位置插入一个元素
InsertRange 方法 向集合的指定位置批量插入元素
LastIndexOf 方法 返回指定元素在集合中最后一次出现的位置,如果集合中不存在该元素,则返回-1
Remove 方法 删除指定的元素
RemoveAt 方法 删除指定位置的元素
RemoveRange 方法 批量删除指定位置开始之后的几个元素
Reverse 方法 反转集合中元素的顺序
Sort 方法 对集合中的元素进行排序
ToArray 方法 将集合转换为数组
Item(索引器) 属性 某个位置对应的元素
Count 属性 返回集合中包含元素的个数。

 VB.Net
'创建一个集合
Dim salmons As New List(Of String)
salmons.Add("黄色")
salmons.Add("绿色")
salmons.Add("黑色")
salmons.Add("白色")

'声明并同时初始化集合的方法
Dim lstCol As New List(Of String) From {"aa","ab","ac"}

'批量添加元素
Dim arrCol() As String={"粉红","蓝色","青色"}
salmons.AddRange(lstCol) '添加一个集合
salmons.AddRange(arrCol) '添加一个数组

'移除
salmons.Remove("ab") '删除指定的元素
salmons.RemoveAt(2)  '删除指定位置的元素
salmons.RemoveRange(6,2)  '批量删除指定位置开始之后的几个元素
Proj.MsgDebug.Add("-------移除后清单----------")
Proj.MsgDebug.Add(String.Join(",",salmons.ToArray()))

'插入
salmons.Insert(0,"透明色") '在首位插入
salmons.Insert(salmons.Count-1,"大红色") '在首位插入
salmons.Insert(2,"红色") '在指定位置插入
salmons.InsertRange(3,lstCol) '跟AddRange用法类似,只是多了一个插入的位置
Proj.MsgDebug.Add("-------插入后清单----------")
Proj.MsgDebug.Add(String.Join(",",salmons.ToArray()))

'根据元素的方式遍历
Proj.MsgDebug.Add("-------按元素遍历清单----------")
For Each item As String In salmons
    Proj.MsgDebug.Add(item)
Next

'用序号的方式遍历
Proj.MsgDebug.Add("-------按序号遍历清单----------")
For i As Integer = 0 To salmons.Count-1
    Proj.MsgDebug.Add(salmons(i))
Next

'集合是泛型的,所以既可以声明基础类型的集合,也可以声明引用类型的集合
Dim lstTables As New List(Of SmGrid)

'不区分大小写
If lstCol.Contains("AA",StringComparer.OrdinalIgnoreCase) Then '返回OK
    Proj.MsgDebug.Add("OK")
Else
    Proj.MsgDebug.Add("NO")
End If
'区分大小写判断
If lstCol.Contains("AA") Then '返回NO
    Proj.MsgDebug.Add("OK")
Else
    Proj.MsgDebug.Add("NO")
End If

'排序
salmons.Sort() '对集合中的元素进行排序
Proj.MsgDebug.Add("-------排序后清单----------")
Proj.MsgDebug.Add(String.Join(",",salmons.ToArray()))

'反转
salmons.Reverse()
Proj.MsgDebug.Add("-------反转后清单----------")
Proj.MsgDebug.Add(String.Join(",",salmons.ToArray()))

'转换为数组
Dim strResult As String=String.Join(",",salmons.ToArray())
Proj.MsgDebug.Add("拼接成字符串:"+strResult)

'查找
Proj.MsgDebug.Add("最后一次出现的位置:" & salmons.LastIndexOf("ac"))

'清空
salmons.Clear()
Proj.MsgDebug.Add(salmons.Count)

'返回结果:红色
'返回结果:aa
'返回结果:ab
'返回结果:ac
'返回结果:绿色
'返回结果:白色
'返回结果:aa
'返回结果:ac
'返回结果:大红色
'返回结果:粉红
'返回结果:-------按序号遍历清单----------
'返回结果:透明色
'返回结果:黄色
'返回结果:红色
'返回结果:aa
'返回结果:ab
'返回结果:ac
'返回结果:绿色
'返回结果:白色
'返回结果:aa
'返回结果:ac
'返回结果:大红色
'返回结果:粉红
'返回结果:OK
'返回结果:NO
'返回结果:-------排序后清单----------
'返回结果:aa,aa,ab,ac,ac,白色,大红色,粉红,红色,黄色,绿色,透明色
'返回结果:-------反转后清单----------
'返回结果:透明色,绿色,黄色,红色,粉红,大红色,白色,ac,ac,ab,aa,aa
'返回结果:拼接成字符串:透明色,绿色,黄色,红色,粉红,大红色,白色,ac,ac,ab,aa,aa
'返回结果:最后一次出现的位置:8
'返回结果:0

C#
// 创建一个集合
List<string> salmons = new List<string>();
salmons.Add("黄色");
salmons.Add("绿色");
salmons.Add("黑色");
salmons.Add("白色");

// 声明并同时初始化集合的方法
List<string> lstCol = new List<string>() { "aa", "ab", "ac" };

// 批量添加元素
string[] arrCol = new[] { "粉红", "蓝色", "青色" };
salmons.AddRange(lstCol); // 添加一个集合
salmons.AddRange(arrCol); // 添加一个数组

// 移除
salmons.Remove("ab"); // 删除指定的元素
salmons.RemoveAt(2);  // 删除指定位置的元素
salmons.RemoveRange(6, 2);  // 批量删除指定位置开始之后的几个元素
Proj.MsgDebug.Add("-------移除后清单----------");
Proj.MsgDebug.Add(string.Join(",", salmons.ToArray()));

// 插入
salmons.Insert(0, "透明色"); // 在首位插入
salmons.Insert(salmons.Count - 1, "大红色"); // 在首位插入
salmons.Insert(2, "红色"); // 在指定位置插入
salmons.InsertRange(3, lstCol); // 跟AddRange用法类似,只是多了一个插入的位置
Proj.MsgDebug.Add("-------插入后清单----------");
Proj.MsgDebug.Add(string.Join(",", salmons.ToArray()));

// 根据元素的方式遍历
Proj.MsgDebug.Add("-------按元素遍历清单----------");
foreach (string item in salmons)
    Proj.MsgDebug.Add(item);

// 用序号的方式遍历
Proj.MsgDebug.Add("-------按序号遍历清单----------");
for (int i = 0; i <= salmons.Count - 1; i++)
    Proj.MsgDebug.Add(salmons[i]);

// 集合是泛型的,所以既可以声明基础类型的集合,也可以声明引用类型的集合
List<SmGrid> lstTables = new List<SmGrid>();

// 不区分大小写
if (lstCol.Contains("AA", StringComparer.OrdinalIgnoreCase))
    Proj.MsgDebug.Add("OK");
else
    Proj.MsgDebug.Add("NO");
// 区分大小写判断
if (lstCol.Contains("AA"))
    Proj.MsgDebug.Add("OK");
else
    Proj.MsgDebug.Add("NO");

// 排序
salmons.Sort(); // 对集合中的元素进行排序
Proj.MsgDebug.Add("-------排序后清单----------");
Proj.MsgDebug.Add(string.Join(",", salmons.ToArray()));

// 反转
salmons.Reverse();
Proj.MsgDebug.Add("-------反转后清单----------");
Proj.MsgDebug.Add(string.Join(",", salmons.ToArray()));

// 转换为数组
string strResult = string.Join(",", salmons.ToArray());
Proj.MsgDebug.Add("拼接成字符串:" + strResult);

// 查找
Proj.MsgDebug.Add("最后一次出现的位置:" + salmons.LastIndexOf("ac"));

// 清空
salmons.Clear();
Proj.MsgDebug.Add(salmons.Count);
//返回结果:红色
//返回结果:aa
//返回结果:ab
//返回结果:ac
//返回结果:绿色
//返回结果:白色
//返回结果:aa
//返回结果:ac
//返回结果:大红色
//返回结果:粉红
//返回结果:-------按序号遍历清单----------
//返回结果:透明色
//返回结果:黄色
//返回结果:红色
//返回结果:aa
//返回结果:ab
//返回结果:ac
//返回结果:绿色
//返回结果:白色
//返回结果:aa
//返回结果:ac
//返回结果:大红色
//返回结果:粉红
//返回结果:OK
//返回结果:NO
//返回结果:-------排序后清单----------
//返回结果:aa,aa,ab,ac,ac,白色,大红色,粉红,红色,黄色,绿色,透明色
//返回结果:-------反转后清单----------
//返回结果:透明色,绿色,黄色,红色,粉红,大红色,白色,ac,ac,ab,aa,aa
//返回结果:拼接成字符串:透明色,绿色,黄色,红色,粉红,大红色,白色,ac,ac,ab,aa,aa
//返回结果:最后一次出现的位置:8
//返回结果:0