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的更多相关文章

  1. Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法

    Java中List,ArrayList.Vector,map,HashTable,HashMap区别用法 标签: vectorhashmaplistjavaiteratorinteger ArrayL ...

  2. JUC集合之 JUC中的集合类

    Java集合包 在"Java 集合系列01之 总体框架"中,介绍java集合的架构.主体内容包括Collection集合和Map类:而Collection集合又可以划分为List( ...

  3. Java 中 Vector、ArrayList、List 使用深入剖析

    线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中.本文试图通过简单的描述,向读者阐述各个类的作用以 ...

  4. java中的集合类总结

    在使用Java的时候,我们都会遇到使用集合(Collection)的时候,但是Java API提供了多种集合的实现,我在使用和面试的时候频 频遇到这样的“抉择” . :)(主要还是面试的时候) 久而久 ...

  5. Objective-C中的集合类

    下面详细的介绍Objective-C中的集合类以及每个集合类的用法,学过其他面向对象编程语言的小伙伴们看到OC的集合类会有种莫名的亲切感,理解起来问题不大,可以类比Java中的集合类去学习. 在Obj ...

  6. C#中数组、ArrayList和List三者的区别

    在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ...

  7. C#中数组、ArrayList和List<T>三者的发展历程

    在C#中数组,ArrayList,List使我们用的最多的类型之一.他们共同的作用都是能够存储一组对象. 那么问题来了: (1)为什么要有三个一样作用的东西呢?他们都很完美吗? (2)谁先出生,又是因 ...

  8. C#中数组、ArrayList和List三者的区别 转

    在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ...

  9. 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)

    方法一:使用Arrays.asList()方法   1 2 String[] asset = {"equity", "stocks", "gold&q ...

随机推荐

  1. 【淡墨Unity3D Shader计划】五 圣诞用品: Unity在Shader三种形式的控制&amp;混合操作编译

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/42060963 作者:毛星云(浅墨)  ...

  2. js获取编辑框游标的位置

    代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...

  3. 最受欢迎web前端技术总结

    Web前端技术发展非常快,主流技术的进步.想想刚毕业那会用asp技术.目前,该网站已经非常少见主流应用. 后来的后来J2EE框架.然后SpringMVC声望,然而,最近的各种js框架广泛传播,Html ...

  4. Android Fragement学习笔记(三)----PreferenceFragment使用

    我相信每个人都Perference大家都比较熟悉,这就是我们常说的偏好,首选项设置,一些数据可以保存.例如,一些元件的,我们使用上次.希望下次启动后仍然生效,烦.一般这个时候我们便会使用perfere ...

  5. HTML 速成

    html零基础者入. 记得学计算机网络的时候好像有学过一些HTML,但没运用起来都忘光了.近来想学学如何写网页.就从html(HyperText Markup Language超文本标记语言)入手了. ...

  6. CodeSmith开发系列资料总结

    CodeSmith开发系列资料总结 最近跟同事在研究CodeSmith,感觉中文文档是少之又少,所以我们自己写(翻译)了一些文档,总结如下,希望对使用CodeSmith的朋友有所帮助: “努力学习的熊 ...

  7. 大规模web服务开发技术

    大规模web服务开发技术 总评        这本书是日本一个叫hatena的大型网站的CTO写的,通过hatena网站从小到大的演进来反应一个web系统从小到大过程中的各种系统和技术架构变迁,比较接 ...

  8. 凝结时光:ImageMagick 制作 gif

    从去年12.12开始,工作日都会从单位的落地窗向外拍一张照片,有点每日打卡的意思.weekday 是一天不落的,weekend 不是每次都到单位,落了几次. 想法来自上学的时候,有同学在同一个地方,拍 ...

  9. 工作经常使用的SQL整理

    工作经常使用的SQL整理,实战篇(二)   工作经常使用的SQL整理,实战篇,地址一览: 工作经常使用的SQL整理,实战篇(一) 工作经常使用的SQL整理,实战篇(二) 工作经常使用的SQL整理,实战 ...

  10. 在Linux使用GCC编译C语言共享库

    在Linux使用GCC编译C语言共享库 对任何程序员来说库都是必不可少的.所谓的库是指已经编译好的供你使用的代码.它们常常提供一些通用功能,例如链表和二叉树可以用来保存任何数据,或者是一个特定的功能例 ...