张磊(Avraber)

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

------->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();

posted on 2012-07-01 20:12  张磊(Avraber)  阅读(137)  评论(0编辑  收藏  举报