------->ArrayList 是一个有序的集合,可以通过索引进行插,删,改等
<1>集合就是一个动态的数组,使用时需要引入命名空间using System.Collections,list.count是计算集合的长度
<2>对集合的操作:
->增
ArrayList list = new ArrayList();
list.Add(需要增加的东西) Add方法一次只能增加一个数据
//list.Add("哈哈哈");
想要将数组元素增加进去,则用list.AddRange(nums),这个方法也可以增加一个集合进去,包括自己
//int[] nums = { 1, 2, 3, 4, 45, 5, 6, 76, 7, 8, 8 };
//list.AddRange(nums);
list.Insert(1(index), "嘿嘿"(values));在指定位置插入
list.InsertRange(index,value)在指定位置插入数组或集合
->删
list.RemoveAt(index);删除指定位置的数据,用这种方法,不能超出索引的范围。
list.Remove(value(object))直接删除指定的数据,没有找到指定的数据时,则什么都不做。
->改
list[index]=value 直接把值赋给指定位置的数据
->查
list.Contains(value); 查找指定的value在集合里面有没有,返回bool值;
list.IndexOf(value,(startindex)); 返回int 类型的index索引值,可以指定初始查找位置
string[] strs1 = { "a", "b", "c", "d", "e" };
string[] strs2 = { "d", "e", "f", "g", "h" };
ArrayList list1 = new ArrayList();
ArrayList list2 = new ArrayList();
list1.AddRange(strs1);
list2.AddRange(strs2);
for (int i = 0; i < list2.Count; i++)
{
if (!list1.Contains(list2[i]))
{
list1.Add(list2[i]);
}
}
Console.ReadKey();
<3>集合转化为数组
ToArray方法可以将ArrayList变成数组
但是是object类型的数组(object[])
ToArray有一个重载,里面可以放置类型,表示转换成什么类型的数组
由于string[] 是一个类型的声明,不是变量,而方法中的参数需要一个变量
利用typeof运算符,获得类型的对应变量(typeof(类型名))
考虑到多态,需要将数据全部转化为数组,所以ToArray方法返回一个Array类型
Array类型是所有数组的父类,那么就通用了,因为可以使用里氏转换原则进行转换
string[] strs = (string[])odd.ToArray(typeof(string));
自定义的类也可以使用这种方法从集合转化为数组
类名[] strs = (类名[])odd.ToArray(typeof(类名));
------->Hashtable 一个无序集合,第一个参数为KEY,就是索引,第二个 参数为value
Hashtable的存在就是为了实现快速的在存储数据中找到某个数据
<1>对Hashtable的操作
Hashtable table = new Hashtable();
->增
table.Add("KEY", Value);
->删
table.Remove("KEY");
—>改
table["KEY"] = value;
->查
table.ContainsKey(KEY)
table.ContainsValue(Value)
->遍历Hashtable
foreach (object item in 集合的名字)
{
使用item
}
例: foreach (object item in table.Keys)
{
Console.WriteLine(item);
}
Console.WriteLine();
foreach (object item in table.Values)
{
Console.WriteLine(item);
}
foreach (DictionaryEntry item in table)
{
Console.WriteLine(item.Key + " " + item.Value);
}
-------------->泛型
就是为了解决object类型对类型处理的繁琐
处理数据,一般都是单一类型
怎么用泛型,有哪些泛型要掌握
ArrayList List
Hashtable Dictionary
不用引用命名空间,所有泛型集合都在System.Collections.Generic下面 创建对象,需要制定类型 与其他结合用法一致 语法: List numList = new List(); List
遍历
foreach (KeyValuePair<string, int>(类型1),(类型2) item in dir) //字典类型遍历
{
sb.AppendFormat("{0}\t{1}\r\n", item.Key, item.Value);
}
foreach (int(类型) item in listodd) //list遍历
{
Console.Write("{0} ",item);
}
泛型转化为数组
int[] arr = (int[])listodd.ToArray();