List<T>类:

List<T> 底层是一个Arry的数组来存储数据的,当存储的数据数量大于原来的数组长度的时,会创建一个新数组并且长度=原来长度*2来存储数据,所有又被加"动态数组"。

元素个数:Count <= 容量:Capacity(手动或自动调整)

与非泛型ArrayList相对应(存储的数据类型是Object类,在使用时会进行装箱,拆箱,影响性能)

String.Join(",",item); 就item里面的元素以','连接起来。

创建组:

1.构造器:3个重载 

1.默认:List<T> tList=new List<T>(); 

2.给初始值(必须是实现了IEnumerable接口的)

T[] t=new T[]{};

List<T> tList=new List<T>(t);

3.给初始容量

List<T> tList=new List<T>(30);//初始大小是30

当一个集合有Add(),那么这个集合有初始化器

List<int> intList=new List<int>(){1,2,3};

2.元素:

1.Add(值)  把值添加到原来集合的末尾。

2.AddRange(一段值)   把一段值添加到原来集合的末尾,并且值是实现了IEnumerable 接口的。

3.Insert(插入位置的索引值,值)  插入值到某一个位置。

4.InsertRange(插入位置的索引值,一段值)    插入一段值到某一个位置。

删除组:

1.Clear()   清空元素    但是Capacity 不会变化。

2.RemoveAt(索引值)  删除索引值对应的元素。

3.RemoveRange(索引值,个数)  删除索引值开始也个数为长度的一段元素。

4.Remove(值) 根据值删除,但是只会删除匹配值的第一个值

5.RemoveAll(Lambda表达式) 删除匹配到的所有值 】

阅读组:

1.Count

2.Capacity 

3.item[索引值]

4.GetRange(开始索引值,需要取出来的个数)   本质是Copy

值类型是深度Copy,引用类型是浅Copy

5.GetEnumerator()   迭代器    

6.ForEach(Lambda表达式)   迭代方法

for循环 在进行集合的增删改查时需要注意:

1.进行插入时,需要手动进行i++。不然会出现死循环

2.进行删除时,需要手动进行i--。不然会出现删除不完全

索引器:集合提供的可以提供索引进行查询的方式,不是所有的集合都有索引器。

迭代器:集合提供的进行查询集合所有的元素的方式,所有的集合都有迭代器。

var e=item.GetEnumerator();

e.Current   获取迭代出来的元素

e.MoveNext()  判断是否进行下一次迭代

迭代器通常和while,do  while   循环使用

foreach循环底层是Enumerator迭代器   在迭代时要求集合的长度不能改变,所以foreach不能进行集合的增删。

修改操作需要看情况:

1.值类型:不可以

2.引用类型的一个变量值:可以修改

查找组:

1.Contains(值)   返回bool类型    底层是使用的是Equals() 判断是否是同一个对象

2.Exists(Lambda表达式)   返回bool类型   Exists(e=>e==500)

3.TrueForAll(Lambda表达式)   返回bool类型   如果集合里面的元素都满足表达式的要求  那么返回true   否则返回false

4.IndexOf(值)    返回查询到的第一个出现的值的索引

5.IndexOf(值,索引值)   返回从索引值开始找出现的第一个值的索引值

6.IndexOf(值,索引值,查找的个数);   返回从索引值开始查,查找给的个数,找到的第一次出现的索引值

7.LastIndexOf()    和IndexOf()   的三个重载方法一样    不过就是从后面开始查

8.Find(Lambda表达式)  从头开始找,返回找到的满足条件的第一个的索引值

9.FindLast(Lambda表达式)  从尾开始找,返回找到的满足条件的第一个的索引值

10.FindAll(Lambda表达式)  返回满足条件的所有的索引值

11.FindIndex(Lambda表达式)   从头开始找,返回找到的满足条件的第一个的索引值

12.FindIndex(索引值,Lambda表达式)    返回从索引值开始找出现的第一个值的索引值

13.FindIndex(索引值,查找的长度,Lambda表达式)   返回从索引值开始查,查找的个数,找到的第一次出现的索引值

14.FindLastIndex()   和FindIndex()  的三个重载方法一样    不过就是从后面开始查

15.BinarySearch(值) 返回排序好(小->大)的查询到的满足条件的第一个索引值。

16.Sort()    排序,从小到大

注意:集合在使用Sort方法进行排序时,实质上是集合调用了元素的ComparableTo 方法对元素进行比较排序,但是自定义的类没有这个方法,所以要手动去让类实现IComparable<类名> 接口

重写ComparableTo 方法。

例子:

List<int> intList=new List<int>(){1,2,3,4,5,6,2,4,7,5,6,9};

1.IndexOf(2)    //返回1

2.IndexOf(2,3)  //返回6

3.IndexOf(2,3,2)  //返回-1  没有找到

4.LastIndexOf(2)   //返回 6

5.LastIndexOf(2,3)//返回1

6.LastIndexOf(2,3,2) //返回 -1  没有找到

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值