集合
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(); } } }
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); } }
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(); } }
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(); } } }
时间就像海绵里的水,只要你愿意挤,总还是有的——鲁迅