集合(1)——泛型(1)——列表ArrayList 和泛型

本文介绍了C#中的ArrayList和泛型List<T>。ArrayList作为动态数组,提供了Add、Clear、Count、Remove等方法。泛型List<T>解决了ArrayList的数据类型不确定性问题,提供类型安全。文章还讨论了如何使用泛型实现奇偶数重新排列的算法,并指出List<T>实现了IEnumerable<T>和ICollection<T>接口,提供了更多的方法如Max、Min、Sort等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、列表

1、概念:ArrayList,可以看做是动态的数组。Add、Clear、Contains、Count、Remove、RemoveAt、ToArray(转换,再没关系)、索引器

(1)ArrayList有一个非常重要的方法Add,作用是把一堆东西放到动态数组里。

(2)Clear是清空这个ArrayList。

(3)Count是计算ArrayList的长度。

(4)Remove是移除ArrayList中的某个元素,Remove后面的括号里写这个元素本身。

(5)RemoveAt是移除ArrayList中的某个元素,根据下标来移除,剩余的元素依次往前替补。例如移除掉第一个,那么原来的第二个元素就变成了第一个元素,原来的第三个变成第二个。

(6)Contains是判断指定的元素是否在ArrayList中,返回值是一个bool类型

(7)下面的代码是打印list1的长度:

(8)下面的代码是通过索引来调:

(9)Add方法是每次加一个,AddRange方法是每次加多个。为什么能添加呢,因为数组都是从Array里继承的。

(10)例如:list1.AddRange(nums); //把nums数组添加到list1列表里。

以下代码是for遍历和foreach遍历:

看上面的截图,计算ArrayList的长度时,不是用length,而是用count

 

2、C#中所有的数组类型int[]、string[]等都是继承自Array类

3、这是一句列子:list1.AddRange(strs);

4、练习:有一个字符串是用空格分隔的一系列整数,写一个程序把其中的整数做如下重新排列打印出来:奇数显示在左侧、偶数显示在右侧。比如‘2 7 8 3 22 9’显示成‘7 3 9 2 8 22’。更牛X的解法:排序。

5、集合,ArrayList、HashSet、Hashtable、Dictionary等都可以叫做集合类。实现了IEnumerable(getEnumerator())、IEnumerable<T>的接口都可以使用foreach进行遍历。

二、泛型

6、用ArrayList的麻烦的地方:数据放进去就不知道是什么类型的了;不能防止非法类型数据的放入;将ArrayList返回给其他函数,会令调用者很困惑。要区分变量、返回值类型和实际对象类型的区别。IntArrayList,StringArrayList又没完没了。

7、我们需要泛型的ArrayList,所以就有了List<T>。List<int> 除此之外并无不同,<int>表示List中放的数据类型是int类型的,因为有声明类型时的约定,因此所有方法的参数、返回值都是确定类型的了。泛型的尖括号里可以放任何类型,枚举、接口、自定义的类、int、string等等都可以

 

8、案例:(1)把分拣奇偶数的程序用泛型实现。分析算法复杂度。

9、从一个整数的ArrayList、List<int>中取出最大数。别用max方法。

1、List<int> 实现了IEnumerable<int>(泛型版本的IEnumerable)、ICollection<int> (泛型版本的ICollection)

2、所有的List<T>所有的方法也都是泛型的,泛型的集合提供的方法更多,Max、Min、Sort等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值