1、集合
集合相对于数组的好处:
1)、长度可变
2)、可以添加任意类型的元素
不好的地方:
从集合中取值的时候必须要不停的做类型转换
不做类型转换:
class Program
{
static void Main(string[] args)
{
ArrayList list = new ArrayList();//数组
list.Add(1);
list.Add(10.5);
list.Add(true);
list.Add("张三");
Person p = new Person();
list.Add(p);
list.Add(new int[] { 1, 2, 3, 4, 5 });
list.Add(list);
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
Console.ReadKey();
}
}
public class Person
{
public void SayHello()
{
Console.WriteLine("我是人类");
}
}
结果:
做类型转换:
class Program
{
static void Main(string[] args)
{
ArrayList list = new ArrayList();//数组
list.Add(1);
list.Add(10.5);
list.Add(true);
list.Add("张三");
Person p = new Person();
list.Add(p);
list.Add(new int[] { 1, 2, 3, 4, 5 });
list.Add(list);
for (int i = 0; i < list.Count; i++)
{
if (list[i] is Person)
{
((Person)list[i]).SayHello();
}
else if (list[i] is int[])
{
for (int j = 0; j < ((int[])list[i]).Length; j++)
{
Console.WriteLine(((int[])list[i])[j]);
}
}
else if (list[i] is ArrayList)
{
}
else
{
Console.WriteLine(list[i]);
}
}
Console.ReadKey();
}
}
public class Person
{
public void SayHello()
{
Console.WriteLine("我是人类");
}
}
结果:
2、集合的方法
Add():添加单个元素
AddRange():添加集合
Clear():清空集合中所有的元素
Remove():删除集合中的元素,括号里写谁,集合就删谁
RemoveAt():根据索引去删除集合中的元素(按单个元素处理)
RemoveRange():删除一定范围内的元素
Insert():向集合的指定位置插入一个元素
InsertRange():向集合的指定位置插入一个集合
Contains():判断集合中是否包含某个元素
Sort():升序排列 (同类型)
3、集合的两个属性
Count :获取这个集合中实际包含的元素个数
Capacity:获取这个集合可以包含的元素个数
起初两个数值都为0,添加一个元素后,向内存申请4个位置,当超过当前位置数后,翻倍申请空间。
static void Main(string[] args)
{
ArrayList list = new ArrayList();
list.Add(0);
Console.WriteLine(list.Count);
Console.WriteLine(list.Capacity);
Console.ReadKey();
}
static void Main(string[] args)
{
ArrayList list = new ArrayList();
list.Add(0);
list.Add(0);
list.Add(0);
list.Add(0);
list.Add(0);
Console.WriteLine(list.Count);
Console.WriteLine(list.Capacity);
Console.ReadKey();
}
static void Main(string[] args)
{
ArrayList list = new ArrayList();
list.Add(0);
list.Add(0);
list.Add(0);
list.Add(0);
list.Add(0);
list.Add(0);
list.Add(0);
list.Add(0);
list.Add(0);
Console.WriteLine(list.Count);
Console.WriteLine(list.Capacity);
Console.ReadKey();
}