C#List、LinkedList、Queue、Stack、Dictionary、SortedList、Hashset、Find方法、Lambda表达式

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_44800780/article/details/102731638

List集合类

泛型List类是最简单的集合类.用法和数组差不多,可用标准数组语法引用集合中的元素.
创建List集合时不需要指定容量,它能随元素的增加而自动伸缩。这种动态行为是有开销的,如果有必要可指定初始大小.
使用方法如下:
在这里插入图片描述


LinkedList集合类

LinkedList实现了双向链表。列表中每一项除了容纳数据项的值,还容纳了对下一项的引用以及上一项的引用.
LinkedList不支持用数组语法插入和检查元素.
在这里插入图片描述

Queue集合类

Queue实现了先入先出队列.元素在队尾插入,从队头移除.
在这里插入图片描述

Stack集合类

Stack实现了后入先出的栈,元素在顶部入栈,从顶部出栈。
在这里插入图片描述

Dictionary<TKey, TValue>集合类

在Dictionary集合中插入键值时,将自动记录哪个键和哪个值关联。
用法如下:
在这里插入图片描述

SortedList<Tkey, Tvalue>集合类

SortedList和Dictionary类很相似,都允许将键和值关联。主要区别是,前者的键数组总是排好序的。
在这里插入图片描述
可以看到输出的结果按照键进行排序.


HashSet集合类

HashSet用来判断数据项是否集合成员和生成并集/交集等.
在这里插入图片描述


集合初始化器

以下语句创建并初始化名为numbers的List对象,这样写就不需要反复调用Add方法了:

List<int>numbers = new List<int>(){10,9,8,7,6,5};

C#编译器内部会将参数hi话转换成一系列Add方法调用。只有支持Add方法的集合才能这样写。

对于获取键/值对的复杂集合,可用索引器语法为每个键指定值,比如:
在这里插入图片描述


Find方法、谓词和Lambda表达式

List<T> LinkedList<T>

无法通过数组语法来查找项,所以专门提供了Find方法.
Find方法的实参是代表搜索条件的谓词.谓词就是一个方法,谓词最好用Lambda表达式指定,Lambda表达式只包含两个元素,参数列表方法主体,返回类型根据Lambda表达式使用上下文推断.
使用方法如下:
在这里插入图片描述
注意:
1.必须提供圆括号,即使不获取任何参数
2.=>操作符,表明这时一个Lambda表达式
3.如果表达式只有一个参数,圆括号也可以省略
在这里插入图片描述


Lambda表达式的形式

x => x * x
x = >{ return x * x; }
(int x) => x / 2
() => Console.WriteLine(0)
(x,y) = { x++; return x / y; }
(ref int x, int y){ x++; return x / y; }

Lambda表达式的特点如下:
1.圆括号指定参数,可省略参数
2.可返回值,但返回类型必须与对应的委托的类型匹配
3.可以是简单表达式,也可以是C#代码块
4.定义的变量会在方法结束时失效
5.Lambda表达式可访问和修改Lambda表达式外部的所有变量,只要那些变量在Lambda表达式定义时。

猜你喜欢

转载自blog.csdn.net/qq_44800780/article/details/102731638