第七天

来源:互联网 发布:linux驱动框架 编辑:程序博客网 时间:2024/04/30 10:21

传智博客。传智博客老师今天教授了集合

先复习了。然后讲了

字符串是1个字符数组、字符串的恒定性、字符串常用方法、StringBulider、.ArryList、ForEach原理、Hashtable


集合

.字符串

1. str.Length 表示指定字符串的字符个数.

2.字符串对象一旦创建 这个对象就不能被修改.

3.在创建1个字符串对象的时候 会先去字符串拘留池中寻找是否有相同字符串内容的对象

如果有就直接让变量指向这个对象 如果没有在创建新的对象.

4.字符串对象一旦创建 不会被GC回收.

 

            string s1 ="xiaojian";

            string s2 ="xiaojian";

            string s3 =s1+s2;

            string s4 = "xiaojianxiaojian";

            Console.WriteLine("{0},,,{1}", s3, s4);//s3s4引用的地址是一样的_

5.打断点,在即时窗口中,输入s3,会出现它的值,输入*s3,会输出地址

 

             string s5 = "xiaojian";

             s5 = "xiaojian1";

            Console.WriteLine("{0}",s5);//此时两个s5的地址都不相同。

 

6.

构造函数只能传递字符数组.

String s = new String(new char[] { '', '', '', '' });

 

7.string.Empty代表1个空的字符串"" 强调不是指的null.

             String s = new String(new char[] {'w','a'});

            if (s !=string.Empty)

            {

                Console.WriteLine("having something");

            }

8" " "" 有区别,前者是空格字符串,后者为空.

 

9.string.Compare(s1, s2); 比较两个字符的大小.

 

            string s1 = "xiaojian";

            string s2 = "xiaojian1";

            int  b = string.Compare(s1, s2);

            Console.WriteLine(b);

 

10.string.Concat(s1, s2); 连接字符串并组成1个新串

            string s1 = "xiaojian";

            string s2 = "like life";

            string s3 = string.Concat(s1, s2);

            Console.WriteLine(s3);

 

11.Contains方法 判断制定的串里面是否包含指定的子串.s.Contains("life");

            string s1 = "I love life";

            bool i = s1.Contains("life");

            Console.WriteLine(i);

12.判断指定的字符串是否以指定的字串结尾

            b = str.EndsWith("!!");

            string s1 = "I love life";

            bool i = s1.EndsWith("life");

            Console.WriteLine(i);

 

//判断指定的字符串是否以指定的字串开始

            b = str.StartsWith("天安");

 

13.Format(String, Object) 格式化字符串

            string str1 = string.Format("我爱{0},你爱{1}", "", "");

 

14.IndexOf() 查找指定的字符或者字符串在串中的索引 如果没有返回-1

            int index = str.IndexOf("门上1");

    

从字符串的结尾往前面查  第一次字串出现的索引

int  index = str.LastIndexOf('!');//以最左边

 

15.在字符串的指定位置 插入字符串

            string str4 = str3.Insert(1, "");

 

16.判断指定的串 是不是null值或者string.Empty ""

            string str5 = null;

         bool b = string.IsNullOrEmpty(str5);

 

17.          从指定的下标一直删除到最后

             str1 = str1.Remove(4);

             从指定的下标删除指定的个数字符

             str1 = str1.Remove(1, 2);

18.

            替换

            str1 = str1.Replace("", "");他替换了我

19.

            以指定的字符分割字符串返回数组.

            string[] str2 = str1.Split(',', ';');

            string [] str2 = str1.Split(new string[] { "hate"}, StringSplitOptions.RemoveEmptyEntries);分割后不能有空字符串

 

 

            ToCharArray() 将字符串转换为字符数组.

            string s1 = "I love life";

            char[] s = s1.ToCharArray();

 

            ToLower() 转换为小写 

            ToUpper() 转换为大写

            Trim() 去掉字符串前后的空格

 

20.接收用户输入的一句英文,将其中的单词以反序输出。

            string str = Console.ReadLine();

            string[] lines = str.Split(' ');

            for (int i = lines.Length - 1; i >= 0; i--)

            {

               Console.Write(lines[i]+" ");

            }

 

 

21.

Stopwatch watch = new Stopwatch();引用空间using System.Diagnostics;

watch.Start();

watch.Stop();

 

22.

            StringBuilder sb = new StringBuilder();

            在sb对象里的字符串中追加新串

            sb.Append("1").Append("2").Append("3");

            追加字符串 并在末尾加换行符.

            sb.AppendLine("123");

23,

Hashtable是一个普通的类,要引入命名空间using System.Collections

            Hashtable table = new Hashtable();

            table.Add(0, 1);

            Console.WriteLine(table[0]);

 

table.Add("","");

            Hashtable table = new Hashtable();

            table.Add("xiaojian", "haoren");

            Console.WriteLine(table["xiaojian"]);

 

增加元素 Key不能重复

table[""] =  ;

改值通过Key来确定元素.

 

table.Remove("");//移除指定键的元素

table.Clear();//全部清除

 

foreach(object obj in table.Keys)table.Keys也可以改成table.Values

{

console.WriteLine(obj);

}

 

如果直接遍历Hashtable 1个遍历项都是1DictionaryEntry对象 在这个对象里的KeyValue属性保存了每1项的键值

           foreach (object obj in table)

           {

               DictionaryEntry en = (DictionaryEntry)obj; 

                  Console.WriteLine(en.Key);

             }

 

bool i = table.Contains();判断键值

bool i = table.ContainsValue();

 

 

table.Count//得到哈希表中键/值的个数

 

动态数组

ArrayList list  =  new ArrayList();

            //1新增元素

            //1. ArrayList内部存储数据的是1object数组创建这个类的对象的时候 这个对象里的数组的长度为0.

            //2. 调用Add方法加元素的时候如果第一次增加元素 就会将数组的长度变成往数组里加.

            //3. 如果存储数据的数组满了.就会新建1个数组长度是原来的数组的2.这个数组被原来数组的变量所引用.

int index = list.Add(1);

list.Add(2);

 

添加1个实现了IConnection接口的对象,数组就实现了这个接口.

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

list.AddRange(arr);

 

表示object数组的长度.

int cap = list.Capacity;

 

修改元素的值.可以通过索引器来取值或者修改值.

list[0] = 110;

 

遍历.Count属性代表的是动态数组里的元素的个数.

for(int i=0;i<list.Count;i++)

{

    Console.WriteLine(list[i]);

}

 

删除指定的值类型对象 删除的是第1

list.Remove(110);

list.Remove(p);

 

删除指定的下标的元素.

list.RemoveAt(0);

 

删除指定的范围.

list.RemoveRange(1,2);

 

清空动态数组中的数据。、清空之后数组的长度不变.

Console.WriteLine(list.Capacity)

list.Clear();

Console.WriteLine(list.Capacity)

 

反序

list.Reverse();

 

ArrayList li  = new ArrayList(120);

int[] arr = {1,2,3,4};

li.AddRange(arr);

foreach(object i in li)

{

    Console.WriteLine(i);

}

 

li[0] = 12;

 

            // 随机生成101-100之间的数放到ArrayList中,要求这10个数不能重复,

            //并且都是偶数(添加10次,可能循环很多次。)

Random r = new Random();

ArrayList list = new ArrayList();

while(true)

{

    int num =r.Next(1,101);

    if(!list.Contains(num)&&num%2==0)

     {

        list.Add(num);

      }

      if(list.Count==10)

      {

         break;

      }

}

 

foreach(int i in list)

{

    Console.WriteLine(i);

}

 

 

 

 

 

           //  有一个字符串是用空格分隔的一系列整数,

            //写一个程序把其中的整数做如下重新排列打印出来:

            //奇数显示在左侧、偶数显示在右侧。

            //比如‘2 7 8 3 22 9 5 11’显示成‘7 3 9 2 8 22’。

 

string str = "2 7 8 3 22 9 5 11";

string[] strs = str.Split[" "];

ArrayList ji = new ArrayList();

ArrayList ou = new ArrayList();

foreach(string s in strs)

{

    int num = int.Parse(s);

    if(num%2==0)

    {

      ou.Add(num);

     }

     else

     {

       ji.Add(num);

      }

}

ji.AddRange(ou);

 

 

IEnumerator tor = ji.GeeEnumerator();

while(tor.MoveNext())

  Console.WriteLine(tor.Current);

}

-------foreach的代码就是这样的

 

 

 

0 0