《C#高级教程》学习笔记14

第二十一,二十二天

(昨天咖啡喝浓了头居然发热了)
(今天继续学习)

9.1.3 格式字符串
例:
double d=13.45;
int i=45;
Console.WriteLine("{0,10:E} {1}",d,i);

常见格式说明符
C     数字类型    特点地区的货币值
D     只用于整数类型    一般的整数
E     数字类型    科学计数法
F     数字类型     小数点后的位数固定
G     数字类型

9.2正则表达式略

第十章:集合
集合的接口:
IEnumerable<T>    如果foreach语句用于集合,就需要IEnumerable接口。这个接口定义了方法GetEnumerable(),它返回了一个实现了IEnumerable接口的枚举
ICollection<T>    ICollection<T>接口由泛型集合类实现,使用这个接口可以获得集合中的元素个数(Count属性),把集合复制到数组中(CopyTo()方法),还可以从集合中添加和删除元素(Add(),Remove(),Clear())
IList<T>    IList<T>接口用于可通过位置访问其中的元素列表,这个接口定义了一个索引器,可以在集合的指定位置插入或删除某些项(Insert()和RemoveAt()方法)。IList<T>接口派生自ICollection<T>接口
ISet<T> ISet<T>接口由集实现,集允许合并不同的集,获得两个集的交集,检查两个集是否重叠。ISet<T>派生自ICollection<T>
IDirection<TKey,TValue>    该接口由包含键和值的泛型集合类实现。使用这个接口可以访问所有的键和值,使用键类型的索引器可以访问某些项,还可以添加或删除某些项
ILookup(TKey,TValue) 该接口类似于IDirection<TKey,TValue>接口,实现该接口的集合有键和值,且可以通过一个键包含多个值。
IComparer<T>    接口IComparer<T>由比较器实现,通过Compare()方法给集合中的元素排序。
IEqualityComparer<T>     接口IEqualityComparer<T>由一个比较器实现,该比较器可用于字典中的键。使用这个接口,可以对对象进行相等性比较。从.NET4开始,这个接口也由数组和元组实现。
IProducerConsumerCollection<T> 该接口是.NET4中新增的,它支持新的线程安全的集合类。

10.3列表
动态列表提供了泛型类List<T>。这个类实现了IList,ICollection,IEnumerable,IList<T>,ICollection<T>,IEnumerable<T>

10.3.1 创建列表
var intList=new List<int>();
var racers=new List<Racer>(); //Racer是一个类
List<int> intList2=new List<int>(10); //容量为10,不足翻
使用Capacity属性可以获取和设置集合的容量
intList.Capacity=20;
集合中的元素个数可以用Count属性读取。
不再添加时,用TrimExcess()方法,去除不需要的容量。

1 集合初始值设定项
var intList=new List<int>(){1,2};
……

2 添加元素
intList.Add(1);

3 插入元素
stringList.Insert(1,"abc");

4 访问元素
可直接用索引器,intList[0]
由于List<T>集合类实现了IEnumerable接口,所以可用foreach
List<T>类还提供了ForEach()方法,该方法用Action<T>参数声明
public void Foreach(Action<T> action);
……

5删除元素
intList.RemoveAt(3);
也可用Remove(),但这个会先进行搜索

6搜索
可以使用的有:IndexOf(),LastIndexOf(),FindIndex(),FindLastIndex(),Find()和FindLast().
若只检查是元素是否存在,能用Exists()方法

7排序
可以使用Sort()方法对元素进行排序.Sort()使用快速排序算法。
Sort()有几个重载方法:
public void List<T>.Sort();
public void List<T>.Sort(Comparison<T>);
public void List<T>.Sort(IComparer<T>);
public void List<T>.Sort(Int32,Int32,IComparer<T>);
只有集合中的元素实现了IComparable接口,才能使用不带参数的Sort()方法。

8类型转换
使用List<T>类的ConvertAll<TOutput>()方法,可以把所有类型的集合转换为另一种类型。
ConvertAll<TOutput>()方法使用一个Converter委托,该委托的定义如下:
public sealed delegate TOutput Converter<TInput,TOutput>(Tinput from);

10.3.2 只读集合
List<T>集合的AsReadOnly()方法返回ReadOnlyCollection<T>类型的对象,该类实现的接口与List<T>集合相同,但所有修改集合的方法和属性都抛出NotSupportedException.

10.4队列
FIFO先进先出
队列使用System.Collections.Generic名称空间中的泛型类Queue<T>实现,它实现了ICollection和IEnumerable<T>接口,但没有实现ICollection<T>接口,因为这个接口Add()和Remove()方法不能用于队列。
因为Queue<T>类没有实现IList<T>接口,所以不能用索引器访问队列。
Queue<T>类的成员
Count     返回队列中的元素个数
Enqueue    在队列一端添加一个元素
Dequeue    在队列的头部读取和删除一个元素,如果没元素就抛出一个InvalidOperationException类型的异常
Peek     在队列的头部读取一个元素,但不删除
TrimExcess     重新设置队列的容量。Dequeue不会重置容量

10.5栈
Statck<T>实现了IEnumerable<T>和ICollection接口
Count     返回栈中的元素个数
Push     在栈顶添加一个元素
Pop     从栈顶删除一个元素,并返回该元素,如果栈是空的,就抛出InvalidOperationException异常
Peek     返回栈顶的元素,但不删除它
Contains 确定某个元素是否在栈中,如果是,就返回true

(2014.12.24)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值