C#List<T>集合类

        泛型List<T>是最简单常用的集合类。用法类似于数组,可以用标准语法(方括号和元素索引)引用集合中的元素。List<T>类比数组灵活,避免了以下的数组限制。

  • 为了改变数组大小,必须创建新数组,复制数组元素(如果新数组较小,甚至还复制不完),然后更新对原始数组的引用,使其引用新数组。

  • 删除一个数组元素,之后所有元素都必须上移-一位。即使这样还是不好使,因为最后一个元素会产生两个拷贝。

  • 插入一个数组元素,必须使元素下移一位来腾出空位。但最后一个元素就丢失了!List<T>集合类通过以下功能来避免这些限制。

List<T>集合类通过以下功能来避免这些限制。

  • 创建List<T>集合时无需指定容量,它能随元素的增加而自动伸缩。这种动态行为当然是有开销的,如有必要可指定初始大小。超过该大小,List<T>集合 自动增大。
  • 可用 Remove方法从List<T>集合删除指定元素。List<T>集合自动重新排序并关闭裂口。还可用RemoveAt方法删除List<T>集合指定位置的项。
  • 可用 Add方法在List<T>集合尾部添加元素。只需提供要添加的元素,List<T>集合的大小会自动改变。
  • 可用Insert方法在List<T>集合中部插入元素。同样地,List<T>集合的大小会自动改变。
  • 可调用Sort方法轻松对List<T>对象中的数据排序。

注意:同数组一样用foreach遍历List<T>集合时,不能用循环变量修改集合内容。在遍历List<T>的foreach循环中不能调用Remove, Add或Insert 方法,否则会抛出InvalidoperationException。

下例展示了如何创建,处理和遍历一个List<int>集合的内容。

using System;
using System.Collections ,Generic;
 
..
 
List<int> numbers = new List<int>();
//使用Add方法填充List<int>
foreach (int number in new int[12]{10, 9,8, 7,7,6,5,10,4,3,2, 1))
{
    numbers.Add(number);
}
 
//在列表倒数第二个位置插入一个元素
//第一个参数是位置,第二个参数是要插入的值
numbers.Insert(numbers.Count-1, 99);
//删除值是7的第一个元素(第4个元素,索引3)
numbers.Remove(7);
//删除当前第7个元素,索引6 (10)
numtbers.RemoveAt(6);
//用for语句遍历剩余11个元素
Console.WriteLine("Iterating using a for statement:");
for (int i = 0; i < numbers.Count; 1++)
{
    int number = numbers[1]; //注意,这里使用了数组语法
    Console.WriteLine(number);
}
//用foreach语句遍历同样的11个元素
Console .WriteLine("\nIterating using a foreach statement:");
foreach (int nunber in numbers)
{
    Console .WriteLine(number);
}
 

代码的输出如下所示:

Iterating using a for statement:

10

9

8

7

6

5

4

3

2

99

1

Iterating using a foreach statement:

10

9

8

7

6

5

4

3

99

1

注意:List<T>集合和数组用不同的方式判断元素数量。列表是用Count属性,数组是用Length属性。
 

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xwzzz_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值