int[] ar = new int[3];
ar[0] = 1;//优点很明显,根据下标随机访问
ar[1] = 2;//缺点也很明显,比如容量是固定的
ar[2] = 3;//又或者访问的时候下标越界了……
//ar[3] = 4;想多点就干瞪眼了
List<int> list = new List<int>();
list.Add(1);//优点很明显,再也不用为容量担心了
list.Add(2);//随便加 /*添加一个元素2
list.Insert(0, 10);//随便插 /*从第一个元素开始插入一个10
list.RemoveAt(0);//删除元素也是这么犀利 /*移除指定索引处的元素,这是是指移除第一个元素
集合与数组的区别
数组属于集合的一种,但是集合有很多种啊! List,Array,Dictionary,Stack等等。每个都有不同的数据处理方式,需要分情况处理。
一般,数组是静态的,而集合是可以动态扩展容量,集合提供更多的成员方法,不过数组更轻量级,语言级支持,性能会更好。
集合表示一组可以通过遍历每个元素来访问的一组对象,特别是可以用foreach循环来访问它们。对象如果可以提供相关对象的引用,就是一个集合,称为枚举,它可以遍历集合中的数据项。更专业的说法是集合必须实现System.Collections.IEnumerable接口
与数组最接近的可能是List了。但list与Array相比最大的好处是可以添加的删除数据,而且长度也自动增长。
数组不能动态添加,它的大小是固定的,不浪费空间,访问速度快
集合是可以动态维护的,它可以不指定大小,也可以指定,但是相对于数组的访问速度相对慢些,传的是对象。
一、数组声明了它容纳的元素的类型,而集合不声明。
二、数组是静态的,一旦创建了就无法改变容量了。而集合是可以动态扩展容量,可以根据需要动态改变大小,集合提供更多的成员方法,能满足更多的需求。
三、数组只能容纳对象,而集合即可容纳对象还能容纳基本数据类型
四、数组是一种可读/可写数据结构,没有办法创建一个只读数组。然而可以使用集合中提供的只读方式来实现,该方法将返回一个集合的只读版本。
找出intA里有的元素,但是intB里没有的元素。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
//找出intA里有的元素,但是intB里没有的元素。
static void Main(string[] args)
{
List<int> intA = new List<int> { 0, 5, 41, 7, 8, 5, 99, 4, 78 };
List<int> intB = new List<int> { 5, 8, 55, 78, 3, 4, 86, 21 };
List<int> intC = new List<int>();
foreach (int tem in intA) //遍历intA中的元素
{
if (!intB.Contains(tem))//假如intA中的元素tem不包含在intB中
{
intC.Add(tem); //将tem添加到intC中
}
}
foreach (int str in intC) //遍历intC中的元素
{
Console.Write(str + " "); //输出intC中的元素
}
Console.ReadKey();
}
}
}