复习:

         1.什么是垃圾回收:

                   .net 应用程序作为一个托管的运行机制,CLR里面有一个极其重要的部分,就是垃圾回收;即 动态的管理内存;

        2.什么时候回收:

                   新建对象为 0代

                   0代 满了就回收一次 没用的内存被回收,有用的变成1代,而且0代变为空,可以继续装;

                   同样 1代 满了会再回收一次,2代满了就报异常

                   即: 代满即会回收

        3.字符串什么时候使用 string.方法,什么时候str.方法:

                   string.方法: 该方法是静态方法,是共有的;

                   str.方法:          该方法为实例方法,是私有的;

                 

         3.字符串的 == 符号是怎么回事儿:

                   char[] chs = { 'a','b','c' };

                   string str1 = new string(chs);

                   string str2 = new string(chs);

                   bool isRight = str1 == str2;

                   返回 isRight = true;

                   此处涉及到运算符重载

                   只要是字符串的内容或地址有一个相同,返回 true ;

==================================================================

本堂内容:

        1. 集合综述

                   01.课前小问题:

                            1.有一数组,如果插入一个数据,或追加一个数据怎么做?

                            2.这个数组如果要删除一个数据,怎么做?

                   以先前的知识很难解决这两个问题

                 

                   02. 集合的定义:

                            集合就是一个动态的数组

                   03. 集合分类:

                            ArrayList, Hashtable

        2. ArrayList集合的使用

                            i   引入命名空间:

                                               using System.Collections

                            ii  new 对象

                            iii 增删改查

                            ArrayList list = new ArrayList();

                   01.增

                            从尾部添加

                            list.Add("love");

                            lise.Add(2);

                            list.Add("你好");

                            也可:list.Add(list);

                                     即将自身数据重新加入进去;

                            添加一批数据

                            liat.AddRange(ICollection);

                            添加数组

                            Int[]nums={122,334,3234,56,43};

                            list.AddRange(nums);

                            插入

                            list.Insert(int index,object value );

                            list.Insert(1,"嘿嘿");

                            插入一批数据

                            list.InsertRange(int index,ICollection);

                   02.删

                            ArrayList list = new ArrayList();

                            int[]nums={122,334,3234,56,43};

                            list.AddRange(nums);

                            RemovAt:删除指定“下标”的数据

                            不得超出索引范围

                            list.RemoveAt(int index);

                            list.RemoveAt(2);

                            Remove 删除指定数据

                            list.Remove(object value);

                            list.Remove(122);

                            RmoveRange 删除一批数据

                            list.RemoveRange(int index, int count);

                            list.RemoveRange(3,2);

                   03.改

                            ArrayList list = new ArrayList();

                            int[]nums = {1,2,3,4,5,6,5,4,3};

                            list.AddRange(nums);

                            list[0] = "我";

                            即将 1 改为了 我

                   04.查

                            Contains  查看是否包含目标对象

                            list.Contains();

                            IndexOf

                            list.IndexOf(object value);

                            list.IndexOf(object value, int startIndex);

                            list.IndexOfRange();

                   05.注意细节

                            Remove 为什么在找不到目标对象是 不报错?

                            Remove 在执行前调用了IndexOf,

                            RemoveAt 在index超出 索引范围会报错

                   06.ToArray        将集合转为数组

                            string[]str = (string[])list.ToArray(typeof(string));

                            ToArray 方法可以将ArrayList 变成数组

                            但是 是object类型的数组(object[]);

                            ToArray有一个重载,里面可以放置类型,表示转换成什么类型的数组

                            由于string[]是一个类型的声明,不是变量,而方法中的参数需要一个变量,利用typeof运算符,获得类型的对应变量(typeof(类型名));

                            考虑到多态,需要将数据全部转化为数组,所以ToArray方法返回一个Array类型,Array类型是所有数组的父类,那么就通用了,因为可以使用里氏转换原则                                      进行转换

                            ArrayList list = new ArrayList();

                            int[]nums = {1,2,3,4,5,6,5,4,3};

                            list.AddRange(nums);

                            // 一般使用都是数组,处理都是集合

                            (方法1)object[]os = list.ToArray();

                                     for (int i = 0; i < os.Length; i++)

                                     {

                                               ConSole.WriteLine((int)os[i] + 1);

                                     }

                          

                            方法怎么知道变成什么类型

                            由于可以变成多个类型,如何实现统一定义(调用)

                            (方法2)int[] nums1=(int[])list.ToArray(typeof(              int));

                                     for(int i=0; i<nums1.Length; i++)

                                     {

                                               ConSole.WriteLine(nums1[i]);

                                     }

---------------------------------------------------------------------------------------------------------------------------                    

         3. Hashtable的使用

                   01. 小问题:

                            i  存储学生的信息:姓名和电话

                            ii 从100万名学生找到某一个学生(张三);

                   02. 特点及目的:

                            Hashtable 的存在就是为了实现快速的在存储数据中找到某个数据;

                            Hashtable 是散列集,无顺序可言

                   03. 用法:

                            1. 引用命名空间

                                     using System.Collections

                            2. new 一个 Hashtable

                                     Hashtable table = new Hashtable();

                            3. 增删改查

                   04. 增

                            只有Add方法

                            table.Add(object key, object value);

                            table.Add("张三", "123344556");

                            table.Add("李四", "334566765");

                            table.Add("Lucy", "122312122");

                   05. 删

                            Remove

                            table.Remove(object key);

                            tble.Remove("Lucy");

                   06. 改

                            通过索引改

                            table[object key] = object value;

                            table["Lucy"] = 10010;

                   07. 查

                            table.Containskey(object key);

                            table.Containsvalue(object value);

                            table.Contains(object key);

                            bool Isright = table.Containskey("张三");

                   08. 补充

                            1. 方法

                                     table.Clear();

                            2. 如何遍历

                                     专门用来遍历Hashtable的语法:

                                     foreach(object item in 集合名)

                                     {

                                               使用item

                                     }

                                     实例:

                                     001. 遍历 键

                                     foreach(object item in table.keys)

                                     {

                                               ConSole.WriteLine(item);

                                     }

                                     002. 遍历值

                                     foreach(object item in table.values)

                                     {

                                               ConSole.WriteLine(item);

                                     }

                                     003. 遍历键和值

                                     foreach(DictionaryEntry item in table)

                                     {

                                               ConSole.WriteLine(item.key+" "+item.Value);

                                     }

         4. 泛型集合

                   01. 作用

                            就是解决object类型对类型处理的繁琐

                            处理数据,一般都是单一类型

                   02. 使用

                            怎么使用泛型,有哪些泛型要掌握

                            ArrayList   ----    List

                            Hashtable   ----    Dictionary

                            使用方法:

                            1.不用引用命名空间,所有泛型集合都在System.Collections.Generic;

                            2.创建对象:

                                     需要指定类型

                            3.与其他集合用法一致

                   03. List

                            List<int> numList = new List<int>();

                            List<string> strList = new List<string>();

                            ……

                            尖括号中可以是自定义类型

                   04. Dictionary

                            Dictionary<string,int>dir=new Dictionary<string,int>();

---------------------------------------------------------------------------------------------------------------------------

        5. 文件File

                   01 path

                            path 是一个静态类

                            常见方法:

                            -> ChangeExtension()

                            -> Combine()

                            -> GetDirectoryName()

                            -> GetExtension()

                            -> GetFileName()

                            -> GetFileNameWithoutExtension()

                            -> GetFullPath()

                            -> GetPathRoot()

                            -> GetRandomFileName()

                            -> GetTempFileName()

                            -> GetTempPath()

                            -> HasExtension()

                            -> IsPathRooted()

                   02.FileStream

                   FileStream file = new FileStream(@"G:\1.txt",FileMode.open,FileAcess.Read);          

                   temp = file.ReadByte();

                   ConSole.WriteLine(temp);

                                   

                          

                 

                 

                 

       

练习

         01. 素数(从1到100)

         02. I love you --> uoy evol I

         03. 工厂复习

         04. 将集合转化为数组

         05. winform 微博输入框

       

作业:

         案例:把分拣奇偶数的程序用泛型实现。List<int>

         练习1:将int数组中的奇数放到一个新的int数组中返回。

         练习2:从一个整数的List<int>            中取出最大数(找最大值)。别用max方法。

         练习:把123转换为:壹贰叁。Dictionary<char,char>

         练习:计算字符串中每种字符出现的次数(面试题)。 “Welcome to Chinaworld”,不区分大小写,打印“W2”“e 2”“o 3”……

         提示:Dictionary<char,int>,char的很多静态方法。char.IsLetter()

         案例:简繁体转换 。Dictionary。

         课下练习:英汉翻译。WinForm做。发英汉词典txt。

         课下练习:火星文翻译器。发字库。(作业。)

posted on 2012-06-30 20:13  轻雨  阅读(338)  评论(0)    收藏  举报