从0开始学C#-part 12 集合(上)

16.集合类

.NET Framework提供了几个泛型类,它们集合元素,并允许应用程序以特殊方式访问这些元素。
下面一个个的学

  • List<T>集合类
    List<T>相比数组使用起来方便很多,创建时无需指定容量,会随着元素的增加或减少来自动伸缩,用.号可以call出Remove(从集合中删除指定元素), Add(在集合尾部添加元素), Insert(在集合指定位置插入元素), Sort(对数据排序)等方法。
List<int> numbers = new List<int>();
    foreach (int number in new int[12] { 10, 9, 8, 7, 7, 6, 5, 10, 4, 3, 2, 1 })
    {
     numbers.Add(number);  //Add方法的参数是要加入集合的值
    }
    numbers.Insert(numbers.Count - 1, 99);  //Insert方法的参数是插入位置,和插入的值
    numbers.Remove(7);  //Remove方法的参数是要删除的元素的值,此即第一个为7的元素
    numbers.RemoveAt(6);  //RemoveAt方法的参数是元素索引,此即第7个元素
    Console.WriteLine($"current count of the list is: {numbers.Count}");  //这里可以看一下还有多少元素
    foreach (int number in numbers)
    {
      Console.WriteLine(number);
    }
    numbers.Sort();   //Sort方法无参数,按照默认方法(从小到大)来重新排列整个集合
    foreach (int number in numbers)
    {
      Console.WriteLine(number);
    }

由于是泛型类,也可以使用List<string> strs = new List<string>来新建一个string的集合,和上述方法同样的操作集合

  • LinkedList<T>集合类

LinkedList<T>集合类实现了双向链表,列表中每一项除了容纳数据项的值,还有对下一项的引用(Next属性)和对上一项的引用(Previous属性)。    
LinkedList不支持用数组语法来插入和检查元素。可以用AddFirst方法从开头插入,也可以用AddLast方法从末尾插入元素。还可以使用AddBeforeAddAfter在指定项前或后插入元素。删除的方法是Remove, RemoveFirst, RemoveLast

LinkedList<int> numbers = new LinkedList<int>();
foreach(int number in new int[] { 10,8,6,4,2})
{
  numbers.AddFirst(number);  //从10开始加入集合,10在队尾
}
for(LinkedListNode<int> node = numbers.First; node!=null;node=node.Next)
{
  int number = node.Value;
  Console.WriteLine(number);  //输出2,4,6,8,10
}

如果用numbers.AddLast方法创建集合呢?则输出的是10,8,6,4,2
继续

numbers.Remove(6);  //Remove方法的参数是要删除的元素值
numbers.Remove(7);  //即使集合里没有这个值,也不会报错,元素还是保持不变
numbers.AddAfter(numbers.Find(4), 9);  //在4的后面添加9,这里使用了Find方法
  • Queue<T>
    Queue实现先入先出队列,元素在队尾插入Enqueue,从队头移出Dequeue
    比如一个集合{9,3,7,2},Enqueue的顺序是9->3->7->2,Dequeue的顺序仍然是9->3->7->2

  • Stack<T>
    Stack实现先入后出队列,元素从队头入栈push,也从队头出栈pop,所以最后一个入栈的总是第一个被取走的,可以想象一叠盘子,新的盘子放在顶上,拿走的时候也是从顶上开始拿
    前面那个例子,{9,3,7,2},push的顺序是9->3->7->2,pop的顺序就变成了2->7->3->9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值