C#中的集合类——ArrayList
1. ArrayList与数组
数组的长度不可变,元素的类型单一;
ArrayList 实际上相当于一个可变长度的动态数组,由于集合中的元素都是object类型,元素的类型可以有多种了;与数组一样,都可以用下标来访问元素。
2. ArrayList的常用的方法
ArrayList list = new ArrayList();
1)添加元素到集合
为集合添加单个元素: list.Add(1);
将集合添加到集合中: list.AddRange(new int[] { 0, 1, 2, 3, 4 }); //将数组添加到集合中
list.AddRange(list1); //将另一个集合中所有的元素添加到集合中
调用Add方法后,添加的元素都被转换为object类型,这里就包含了里氏转换原则。
2)删除集合中元素
list.Remove(1); //删除集合中第一个值为1的元素;删除单个元素,写谁就删谁。
list.RemoveAt(0); //根据下标来删除元素 删除第0个元素后,后面的元素会自动移到前面来
list.RemoveRange(2, 4); //从2位置开始,删除4个的元素
3)确定元素是否在集合中
if ( !list.Contains("windrunner") )
4)将元素插入到集合中
list.Insert(2, "插入的元素"); //在指定位置插入一个元素
list.InsertRange(3, new string[] {"王五","赵六","洪七"}); //在制定位置插入一个集合
5) 对集合中元素进行排列
list.Sort(); //升序排列,前提:集合中所有的元素必须是可以互相比较的类型;假如集合中同时存在int和string类型,则无法比较。
6) 将整个集合中元素的顺序反转
list.Reverse(); //如 1 2 3 变成 3 2 1
7)清空所有的元素
list.Clear();
3. ArrayList集合的长度问题
每次集合中实际包含的元素个数(count)超过了可以包含的元素的个数(capcity)的时候,
集合就会向内存中申请多开辟一倍的空间,来保证集合的长度一直够用。
4. ArrayList集合的两个练习
//创建一个集合,里面添加一些数字,求平均值与和,最大值
ArrayList list1 = new ArrayList();
list1.AddRange(new int[] { , , , , , , , , });
int sum = ;
int max = (int)list1[]; //如果不加(int)来转换,会报错,因为不能将object类型的数据赋值给int变量
foreach (int item in list1)
{
sum += item;
if ( item > max)
{
max = item;
} //如果使用for循环,sum += (int)list1[i] 需要将object类型转换为int类型
//使用foreach 的好处就在这里
//这里实际上是里氏转换原则,1. object是int的父类,2. 集合中的元素表现出来的时候是object类型,但实际上装的是int类型
} Console.WriteLine("这个集合中所有数字的和是{0},平均值是{1}", sum, sum / list1.Count); //写一个长度为10的集合,要求在里面随机地存放10个数字(0 - 9),但是要求所有的数字不重复
ArrayList list2 = new ArrayList();
int[] array = { , , , , , , , , , };
ArrayList listTemp = new ArrayList(array);
Random random = new Random();
for (int i = ; i < ; i++)
{
int index = random.Next(, listTemp.Count);
list2.Add(listTemp[index]);
listTemp.RemoveAt(index);
} for (int i = ; i < list2.Count; i++)
{
Console.WriteLine(list2[i]);
}
Console.WriteLine(); ArrayList list3 = new ArrayList();
for (int i = ; i < ; i++)
{
int rNumber = random.Next(, );
if (!list3.Contains(rNumber))
{
list3.Add(rNumber);
}
else
{
//产生了重复的随机数,本次循环无效
i--;
}
}
for (int i = ; i < list3.Count; i++)
{
Console.WriteLine(list3[i]);
}
5. 总结
ArrayList 集合: 在存储数据的时候很方便,但在取出数据的时候就比较麻烦。因为每次取出数据,都需要进行数据类型的转换。
C#中的集合类——ArrayList的更多相关文章
- Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法
Java中List,ArrayList.Vector,map,HashTable,HashMap区别用法 标签: vectorhashmaplistjavaiteratorinteger ArrayL ...
- JUC集合之 JUC中的集合类
Java集合包 在"Java 集合系列01之 总体框架"中,介绍java集合的架构.主体内容包括Collection集合和Map类:而Collection集合又可以划分为List( ...
- Java 中 Vector、ArrayList、List 使用深入剖析
线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中.本文试图通过简单的描述,向读者阐述各个类的作用以 ...
- java中的集合类总结
在使用Java的时候,我们都会遇到使用集合(Collection)的时候,但是Java API提供了多种集合的实现,我在使用和面试的时候频 频遇到这样的“抉择” . :)(主要还是面试的时候) 久而久 ...
- Objective-C中的集合类
下面详细的介绍Objective-C中的集合类以及每个集合类的用法,学过其他面向对象编程语言的小伙伴们看到OC的集合类会有种莫名的亲切感,理解起来问题不大,可以类比Java中的集合类去学习. 在Obj ...
- C#中数组、ArrayList和List三者的区别
在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ...
- C#中数组、ArrayList和List<T>三者的发展历程
在C#中数组,ArrayList,List使我们用的最多的类型之一.他们共同的作用都是能够存储一组对象. 那么问题来了: (1)为什么要有三个一样作用的东西呢?他们都很完美吗? (2)谁先出生,又是因 ...
- C#中数组、ArrayList和List三者的区别 转
在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ...
- 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)
方法一:使用Arrays.asList()方法 1 2 String[] asset = {"equity", "stocks", "gold&q ...
随机推荐
- 快速构建Windows 8风格应用36-商店应用发布流程
原文:快速构建Windows 8风格应用36-商店应用发布流程 引言 在发布应用之前,我们需要注册开发者账号才能够发布应用.我们可以登录https://appdev.microsoft.com/Sto ...
- 项目笔记---CSharp图片处理
原文:项目笔记---CSharp图片处理 项目笔记---CSharp图片处理 最近由于项目上需要对图片进行二值化处理,就学习了相关的图片处理上的知识,从开始的二值化的意义到动态阀值检测二值化等等,并用 ...
- LinQ—扩展方法
概述 本节主要解说扩展方法,涉及LinQ的详细知识不多. 扩展方法的描写叙述 .net framework为编程人员提供了非常多的类,非常多的方法,可是,不论.net framework在类中为我们提 ...
- 十款最佳Node.js MVC框架
十款最佳Node.js MVC框架摘要:Node.js是JavaScript中最为流行的框架之一,易于创建可扩展的Web应用.本文分享十款最佳的JavaScript框架. Node.js是JavaSc ...
- TodoList开发笔记 – Part Ⅲ
本节开始对TodoList项目的客户端进行开发 一.初步了解JQuery 其实我在学校时有接触过一段时间的Web开发,虽然代码量不多也不复杂,但也已经感受到了各浏览器对Web各项标准的恶意,Web界对 ...
- SQL 内存数据库的细节
解读SQL 内存数据库的细节 相信大家对内存数据库的 概念并不陌生,之前园子里也有多位大牛介绍过SQL内存数据库的创建方法,我曾仔细 拜读过,有了大致了解,不过仍有很多细节不清晰,比如: (1)内存数 ...
- Trie字典树算法
特性 Trie树属于树形结构,查询效率比红黑树和哈希表都要快.假设有这么一种应用场景:有若干个英文单词,需要快速查找某个单词是否存在于字典中.使用Trie时先从根节点开始查找,直至匹配到给出字符串的最 ...
- Asp.net MVC4 CodeFirst 使用EFTracingProvider
一.关于EFTracingProvider EFTracingProvider相关信息见作者博客:关于EFTracingProvider EFTracingProvider Demo下载地址:Trac ...
- iOS LBS相关: 定位和中国特色的位置偏移纠正
LBS模块,首先当然是定位,获取自己所在的位置.主要用到的就是CLLocationManager,实例一个,然后调用startUpdatingLocation即可.其中可以指定精度CLLocation ...
- iOS国际化和genstrings所有子目录本地化字符串
最近在忙着一个国外项目,天天加班,没时间更新博客.就简单讲讲国际化的知识. 首先,我们使用字符串,必须用NSLocalizedString(key,comment),这样我们在不同的Localizab ...