集合

1.ArrayList类集合    注意引用:using System.Collections;

特性:可以装任意类型的元素,和数量

using System;

using System.Collections;
namespace test
{
  public class teste {
      public static int bl=10;
       static void Main()
       {
           //集合的好处,长度可以任意改变,类型随便

           //数组长度不可变,类型不可变
           ArrayList list = new ArrayList();//创建集合对象
           list.Add(12);
           list.Add("张三");
           list.Add('');
           //添加一个数组
           list.AddRange(new int[]{1,2,3});
           list.AddRange(list);//添加自己

           //list.Clear();清空所有元素
           //list.Remove(12);删除单个元素,删谁写谁
          //list.RemoveAt(2);根据下标删除元素
           //list.Sort();升序排列
           // list.Reverse();反转
           //list.Insert(1,"插入的");在指定的位置插入一个元素
           //list.InsertRange(0,new string[]{"zhang","lisi"});在指定的位置插入数组
          // bool b = list.Contains(12);判断是否包含某个元素

          
           for (int i = 0; i < list.Count;i++ ) {
               Console.WriteLine(list[i]);
           }
;
           Console.ReadKey();
       }
   }

 }
View Code

 

 2.泛型集合List<T>    用法和ArrayList一样只是类型不同,只能存储特定的类型

class Program
    {
        static void Main(string[] args)
        {
            #region List<T>类常用的方法
                List<string> dinosaurs = new List<string>();//创建一个string的List集合

                Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);//输出默认容量的大小

                dinosaurs.Add("Tyrannosaurus");//向集合添加元素
                dinosaurs.Add("Amargasaurus");
                dinosaurs.Add("Mamenchisaurus");
                dinosaurs.Add("Deinonychus");
                dinosaurs.Add("Compsognathus");

                Console.WriteLine();
                foreach (string dinosaur in dinosaurs)//打印集合中的元素
                {
                    Console.WriteLine(dinosaur);
                }

                Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);
                Console.WriteLine("Count: {0}", dinosaurs.Count);//输出集合中实际元素的数量

                Console.WriteLine("\nContains(\"Deinonychus\"): {0}",
                    dinosaurs.Contains("Deinonychus"));//判断集合中是否包含某个元素

                Console.WriteLine("\nInsert(2, \"Compsognathus\")");
                dinosaurs.Insert(2, "Compsognathus");//将元素插入到集合的指定索引出,允许插入重复的元素

                Console.WriteLine();
                foreach (string dinosaur in dinosaurs)//打印集合中的元素
                {
                    Console.WriteLine(dinosaur);
                }
                Console.WriteLine("\ndinosaurs[3]: {0}", dinosaurs[3]);//输出集合中索引为3的元素

                Console.WriteLine("\nRemove(\"Compsognathus\")");
                dinosaurs.Remove("Compsognathus");//移除集合中第一个匹配的元素

                Console.WriteLine();
                foreach (string dinosaur in dinosaurs)//打印集合中的元素
                {
                    Console.WriteLine(dinosaur);
                }
                dinosaurs.TrimExcess();//减小容量以匹配计数,然后显示 Capacity 和 Count 属性。如果未用容量已经小于总容量的 10%,则列表容量不会进行调整。
                Console.WriteLine("\nTrimExcess()");
                Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
                Console.WriteLine("Count: {0}", dinosaurs.Count);

                dinosaurs.Clear();//移除列表中的所有项,然后显示 Capacity 和 Count 属性。
                Console.WriteLine("\nClear()");
                Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
                Console.WriteLine("Count: {0}", dinosaurs.Count);
            
#endregion

            #region List<T>类的新增方法

            List<string> dinosaurs1 = new List<string>();//创建一个string的List集合

            dinosaurs1.Add("Compsognathus");//向集合添加元素
            dinosaurs1.Add("Amargasaurus");
            dinosaurs1.Add("Oviraptor");
            dinosaurs1.Add("Velociraptor");
            dinosaurs1.Add("Deinonychus");
            dinosaurs1.Add("Dilophosaurus");
            dinosaurs1.Add("Gallimimus");
            dinosaurs1.Add("Triceratops");

            Console.WriteLine();
            foreach (string dinosaur in dinosaurs1)
            {
                Console.WriteLine(dinosaur);
            }

            Console.WriteLine("\nTrueForAll(EndsWithSaurus): {0}",
                dinosaurs1.TrueForAll(EndsWithSaurus));//确定集合中的每个元素是否都与指定的谓词所定义的条件相匹配

            Console.WriteLine("\nFind(EndsWithSaurus): {0}",
                dinosaurs1.Find(EndsWithSaurus));//搜索与指定谓词条件相匹配的第一个元素

            Console.WriteLine("\nFindLast(EndsWithSaurus): {0}",
                dinosaurs1.FindLast(EndsWithSaurus));//搜索与指定谓词条件相匹配的最后一个元素

            Console.WriteLine("\nFindAll(EndsWithSaurus):");
            List<string> sublist = dinosaurs1.FindAll(EndsWithSaurus);//检索与指定谓词定义的条件匹配的所有元素

            foreach (string dinosaur in sublist)//打印集合
            {
                Console.WriteLine(dinosaur);
            }

            Console.WriteLine(
                "\n{0} elements removed by RemoveAll(EndsWithSaurus).",
                dinosaurs1.RemoveAll(EndsWithSaurus));//移除与指定谓词定义的条件匹配的所有元素

            Console.WriteLine("\nList now contains:");
            foreach (string dinosaur in dinosaurs1)//打印集合
            {
                Console.WriteLine(dinosaur);
            }

            Console.WriteLine("\nExists(EndsWithSaurus): {0}",
                dinosaurs1.Exists(EndsWithSaurus));//该方法从头开始遍历该列表,依次将每个元素传递给 EndsWithSaurus 方法。如果 EndsWithSaurus 方法针对任何元素返回 true,搜索即停止
            dinosaurs1.Sort();//对集合中的元素排序
            dinosaurs1.Reverse();//将集合中的元素顺序反转
            dinosaurs1.ForEach(Print);//对集合中的每个元素执行指定的方法(如Print方法)
            Console.Read();
            #endregion
        }

        // 搜索谓词方法,该方法接受一个字符串作为参数,并返回一个布尔值,指示输入的字符串是否以“saurus”结尾。
        private static bool EndsWithSaurus(String s)
        {
            if ((s.Length > 5) &&
                (s.Substring(s.Length - 6).ToLower() == "saurus"))
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        //定义打印集合的方法
        private static void Print(string s)
        {
            Console.WriteLine(s);
        }

    }
View Code

 

3.  Hashtable键值对集合    注意引用:using System.Collections;

public class Program
    {
        public static void Main(string[] args)
        {
            //创建一个HashTable
            Hashtable openWith = new Hashtable();

            //为HashTable添加元素,不能有重复的key,但可以有重复的值
            openWith.Add("txt", "notepad.exe");
            openWith.Add("bmp", "paint.exe");
            openWith.Add("dib", "paint.exe");
            openWith.Add("rtf", "wordpad.exe");

            

            //添加重复的key,会抛出异常
            try
            {
                openWith.Add("txt", "winword.exe");
            }
            catch
            {
                Console.WriteLine("An element with Key = \"txt\" already exists.");
            }

            //通过key获得值 
            Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);

            //重新赋值
            openWith["rtf"] = "winword.exe";
            Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);

            //以赋值的方式,创建一个新元素
            openWith["doc"] = "winword.exe";

            //如果HashTable中不包含该元素,将抛出异常(经测试这里不抛出异常)
            //原因(如果未找到指定的键,尝试获取它将返回 空引用(在 Visual Basic 中为 Nothing),尝试设置它将使用指定的键创建新元素。 )
            try
            {
                Console.WriteLine("For key = \"tif\", value = {0}.", openWith["tif"]);
            }
            catch
            {
                Console.WriteLine("Key = \"tif\" is not found.");
            }

            //判断是否包含特定的key
            if (!openWith.ContainsKey("ht"))
            {
                openWith.Add("ht", "hypertrm.exe");
                Console.WriteLine("Value added for key = \"ht\": {0}", openWith["ht"]);
            }

            //遍历HashTable
            Console.WriteLine();
            foreach (DictionaryEntry de in openWith)
            {
                Console.WriteLine("Key = {0}, Value = {1}", de.Key, de.Value);
            }

            // 获取HashTable中值的集合
            ICollection valueColl = openWith.Values;


            Console.WriteLine();
            foreach (string s in valueColl)
            {
                Console.WriteLine("Value = {0}", s);
            }

            // 获取HashTable中键的集合
            ICollection keyColl = openWith.Keys;


            Console.WriteLine();
            foreach (string s in keyColl)
            {
                Console.WriteLine("Key = {0}", s);
            }


            Console.WriteLine("\nRemove(\"doc\")");
            //移除指定的元素
            openWith.Remove("doc");

            if (!openWith.ContainsKey("doc"))
            {
                Console.WriteLine("Key \"doc\" is not found.");
            }


            Hashtable mySourceHT = new Hashtable();
            mySourceHT.Add("A", "valueA");
            mySourceHT.Add("B", "valueB");

            // 创建一个字符串数组
            String[] myTargetArray = new String[15];
            myTargetArray[0] = "The";
            myTargetArray[1] = "quick";
            myTargetArray[2] = "brown";
            myTargetArray[3] = "fox";
            myTargetArray[4] = "jumped";
            myTargetArray[5] = "over";
            myTargetArray[6] = "the";
            myTargetArray[7] = "lazy";
            myTargetArray[8] = "dog";

            // 遍历数组的值
            Console.WriteLine("The target Array contains the following before:");
            PrintValues(myTargetArray, ' ');

            //将hashtable中的key复制到数组中
            Console.WriteLine("After copying the keys, starting at index 6:");
            mySourceHT.Keys.CopyTo(myTargetArray, 6);

            
            PrintValues(myTargetArray, ' ');

            //将hashtable中的Value复制到数组中
            Console.WriteLine("After copying the values, starting at index 6:");
            mySourceHT.Values.CopyTo(myTargetArray, 6);

            PrintValues(myTargetArray, ' ');

            Console.Read();
        }

        //遍历数据方法
        public static void PrintValues(String[] myArr, char mySeparator)
        {
            for (int i = 0; i < myArr.Length; i++)
                Console.Write("{0}{1}", mySeparator, myArr[i]);
            Console.WriteLine();
        }

    }
View Code

 

4.Dictionaty字典集合   相似 Hashtable

using System;
using System.Collections;
using System.Collections.Generic;
namespace Dome
{
    class person
    {
        static void Main(string[] args)
        {
            Dictionary<int, string> dic = new Dictionary<int, string>();//创建对象
            dic.Add(1,"张三");
            dic.Add(2,"李四");
            dic.Add(3,"王五");

            dic[1] = "赵六";
            foreach(int item in dic.Keys){
                Console.WriteLine("{0}-------{1}", item, dic[item]);
            }
            //另一种遍历方式
            foreach(KeyValuePair<int,string>it in dic){
                Console.WriteLine("{0}-------{1}",it.Key,it.Value);
            }

            Console.ReadKey();
        }
    }
}
View Code

 

posted @ 2017-04-01 22:46  ADFL  阅读(127)  评论(0编辑  收藏  举报