新手菜鸟学习C#的笔记总结 之数组与集合(下)
2014-02-01 16:25
495 查看
本人是初学菜鸟,有错误的地方欢迎大家指正。
接上节……
集合的使用:
1)动态数组类ArrayList,与固定数组类似,下面总结不同的地方
①元素添加
②元素插入
③元素删除
④元素查找
⑤元素容量调节
⑥动态数组转换成静态数组
2)队列Queue类(先进先出)
①队列的定义
②元素添加与输出
3)堆栈类Stack类(先进后出)
①堆栈的定义
①Hashtable的定义
④Hashtable元素的查找 class Program
{
static void Main(string[] args)
{
//简单的两种初始化
Hashtable hashtable1 = new Hashtable();//使用默认初始化容
Hashtable hashtable2 = new Hashtable(20);//初始化容量20,感觉这容量似乎没用啊~?
hashtable1.Add(10, 10);
hashtable1.Add(9, 9);
hashtable1.Add(8, 8);
hashtable1.Add(7, 7);
hashtable1.Add(6, 6);
hashtable1.Add(5, 5);
Console.WriteLine(hashtable1[10]);//读取键值为10 的元素的数值
hashtable1[9] = 1;//修改键值为9 的元素的数组
Console.WriteLine(hashtable1[9]);//输出结果
}
}
4)排序列表SortedList
①SortedList的定义
copyto()
输出结果:
43210000000000000000
12340000000000000000
12340000000000000000
00000000000000004321
接上节……
集合的使用:
1)动态数组类ArrayList,与固定数组类似,下面总结不同的地方
①元素添加
class Program { static void Main(string[] args) { ArrayList table=new ArrayList(10);//定义一个初始容量为10的动态数组 table.Add(1); foreach(int t in table) Console.WriteLine(t); } }
②元素插入
class Program { static void Main(string[] args) { ArrayList table=new ArrayList(20); for (int i = 0; i < 10; i++) table.Add(i); table.Insert(2,1);//在索引2处插入数字1 foreach(int t in table) Console.WriteLine(t); } }
③元素删除
class Program { static void Main(string[] args) { ArrayList table=new ArrayList(20); for (int i = 0; i < 10; i++) table.Add(i); foreach (int t in table) Console.WriteLine(t); table.Clear(); //清除所有元素 } }
class Program { static void Main(string[] args) { ArrayList table=new ArrayList(20); for (int i = 0; i < 10; i++) table.Add(10-i); table.RemoveAt(7); //移除索引为7的元素 table.Remove(7); //移除第一个与 7 匹配的元素 foreach (int t in table) Console.WriteLine(t); } }
④元素查找
class Program { static void Main(string[] args) { ArrayList table=new ArrayList(20); Boolean res = false; for (int i = 0; i < 10; i++) table.Add(10-i); res = table.Contains(7); //查找集合中是否存在7这个元素 Console.WriteLine(res); } }
⑤元素容量调节
static void Main(string[] args) { ArrayList table=new ArrayList(20); for (int i = 0; i < 10; i++) table.Add(10-i); Console.WriteLine(table.Capacity); table.TrimToSize(); //调节容量与现有元素个数一致 Console.WriteLine(table.Capacity); }
⑥动态数组转换成静态数组
class Program { static void Main(string[] args) { ArrayList table = new ArrayList(20); for (int i = 0; i < 10; i++) table.Add(10-i); int [] a=(int [])table.ToArray(typeof(int));//这种形式才行 foreach(int t in a) Console.WriteLine(t); } }
2)队列Queue类(先进先出)
①队列的定义
class Program { static void Main(string[] args) { int[] table={1,2,3,4,5,6,7,8,9,10}; Queue Line1 = new Queue();//默认初始化 容量32,增长系数2.0 Queue Line2 = new Queue(10);//设置初始容量为10 Queue Line3 = new Queue(10, 3);//设置初始容量为 10 ,增长系数3.0,增长3倍? Queue Line4 = new Queue(table);//以数组table来定义队列 } }
②元素添加与输出
class Program { static void Main(string[] args) { int[] table={1,2,3,4,5,6,7,8,9,10}; Queue Line4 = new Queue(table);//以数组table来定义队列 foreach (int t in Line4) { Console.WriteLine(t); } Line4.Enqueue(11);//将11加入队列末尾 foreach (int t in Line4) { Console.WriteLine(t); } Console.WriteLine(Line4.Dequeue());//第一个元素 1 出列 } }
3)堆栈类Stack类(先进后出)
①堆栈的定义
static void Main(string[] args) { int[] table = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; Stack stack1 = new Stack();//默认容量为10 Stack stack2 = new Stack(20);//初始化容量为20 Stack stack3 = new Stack(table);//用数组table来初始化堆栈 }②入栈与出栈
static void Main(string[] args) { int[] table = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; Stack stack3 = new Stack(table);//用数组table来初始化堆栈 stack3.Push(11);//在末尾加入一个元素11 Console.WriteLine(stack3.Pop());//后进先出,推出最后一个元素11 }4)哈希表Hashtable,键值与值对应
①Hashtable的定义
class Program { static void Main(string[] args) { //简单的两种初始化 Hashtable hashtable1 = new Hashtable();//使用默认初始化容 Hashtable hashtable2 = new Hashtable(20);//初始化容量20,感觉这容量似乎没用啊~? } }②Hashtable元素的添加(添加在头还是尾呢?)
static void Main(string[] args) { //简单的两种初始化 Hashtable hashtable1 = new Hashtable();//使用默认初始化容 hashtable1.Add(0, 10);//添加 键值为0 的数值 10 4000 hashtable1.Add(3, 8);//添加键值为3 的数值 8 foreach (DictionaryEntry t in hashtable1) { Console.WriteLine("Key:{0}\t Value:{1}",t.Key,t.Value); } }③Hashtable元素的删除
class Program { static void Main(string[] args) { //简单的两种初始化 Hashtable hashtable1 = new Hashtable();//使用默认初始化容 Hashtable hashtable2 = new Hashtable(20);//初始化容量20,感觉这容量似乎没用啊~? hashtable1.Add(0, 10); hashtable1.Add(1, 8); hashtable1.Add(2, 7); hashtable1.Clear();//删除所有元素 foreach (DictionaryEntry t in hashtable1) { Console.WriteLine("Key:{0}\t Value:{1}",t.Key,t.Value); } } }
class Program { static void Main(string[] args) { //简单的两种初始化 Hashtable hashtable1 = new Hashtable();//使用默认初始化容 Hashtable hashtable2 = new Hashtable(20);//初始化容量20,感觉这容量似乎没用啊~? hashtable1.Add(0, 10); hashtable1.Add(1, 8); hashtable1.Add(2, 7); hashtable1.Add(3, 6); hashtable1.Add(4, 5); hashtable1.Add(5, 4); hashtable1.Remove(3); //删除键值为3的元素 foreach (DictionaryEntry t in hashtable1) { Console.WriteLine("Key:{0}\t Value:{1}",t.Key,t.Value); } } }
④Hashtable元素的查找 class Program
{
static void Main(string[] args)
{
//简单的两种初始化
Hashtable hashtable1 = new Hashtable();//使用默认初始化容
Hashtable hashtable2 = new Hashtable(20);//初始化容量20,感觉这容量似乎没用啊~?
hashtable1.Add(10, 10);
hashtable1.Add(9, 9);
hashtable1.Add(8, 8);
hashtable1.Add(7, 7);
hashtable1.Add(6, 6);
hashtable1.Add(5, 5);
Console.WriteLine(hashtable1[10]);//读取键值为10 的元素的数值
hashtable1[9] = 1;//修改键值为9 的元素的数组
Console.WriteLine(hashtable1[9]);//输出结果
}
}
4)排序列表SortedList
①SortedList的定义
class Program { static void Main(string[] args) { //简单的两种初始化 Hashtable hashtable1 = new Hashtable();//使用默认初始化容 hashtable1.Add(10, 10); hashtable1.Add(9, 9); hashtable1.Add(7, 7); hashtable1.Add(8, 8); hashtable1.Add(6, 6); hashtable1.Add(5, 5); SortedList sortlist1 = new SortedList();//默认容量定义 SortedList sortlist2 = new SortedList(40);//定义初始容量为40 SortedList sortlist3 = new SortedList(hashtable1);//以hashtable1初始化 }②SortedList元素的添加(无论以什么顺序添加,都会以键值顺序(从小到大)加入集合)
class Program { static void Main(string[] args) { SortedList sortlist1 = new SortedList();//以hashtable1初始化 sortlist1.Add(2, 2); sortlist1.Add(1, 1); sortlist1.Add(4, 4); sortlist1.Add(3, 3); foreach (DictionaryEntry t in sortlist1) { Console.WriteLine(t.Value); } } }③SortedList元素的删除
class Program { static void Main(string[] args) { SortedList sortlist1 = new SortedList();//以hashtable1初始化 sortlist1.Add(2, 2); sortlist1.Add(1, 1); sortlist1.Add(4, 4); sortlist1.Add(3, 3); sortlist1.Remove(1);//删除数值为1的数 sortlist1.RemoveAt(2);//删除索引为2的元素 foreach (DictionaryEntry t in sortlist1) { Console.WriteLine(t.Value); } sortlist1.Clear();//清楚所有元素 } }④SortedList元素的查找
class Program { static void Main(string[] args) { SortedList sortlist1 = new SortedList();//以hashtable1初始化 sortlist1.Add(2, 2); sortlist1.Add(1, 1); sortlist1.Add(4, 4); sortlist1.Add(3, 3); Console.WriteLine( sortlist1.IndexOfKey(4)); //找到键值为4的索引,结果为3 Console.WriteLine(sortlist1.IndexOfValue(4));//找到数值为4的索引,结果为3 Console.WriteLine("是否存在键值为3的数?:{0}",sortlist1.Contains(3)); Console.WriteLine("是否存在键值为5的数?:{0}", sortlist1.ContainsKey(5)); Console.WriteLine("是否存在数值为2的数?:{0}", sortlist1.ContainsValue(2)); } }⑤SortedList元素值的读取或修改(可以用使用下标)
class Program { static void Main(string[] args) { SortedList sortlist1 = new SortedList();//以hashtable1初始化 sortlist1.Add(2, 2); sortlist1.Add(1, 1); sortlist1.Add(4, 4); sortlist1.Add(3, 3); sortlist1[1] = 10; Console.WriteLine(sortlist1[1]);//注意,此处的[1]不是索引为1,而是键值为1,结果是1 } }⑥SortedList,Hashtable,Stack,Queue集合复制到Array(数组)中
copyto()
class Program { static void Main(string[] args) { int[] table1 = new int[20]; int[] table2 = new int[20]; int[] table3 = new int[20]; int[] table4 = new int[20]; Hashtable hashtable = new Hashtable(); hashtable.Add(1, 1);hashtable.Add(2, 2);hashtable.Add(3, 3);hashtable.Add(4, 4); hashtable.Values.CopyTo(table1, 0);//hashtable->array SortedList sortlist = new SortedList(hashtable); sortlist.Values.CopyTo(table2,0);//sortedlist->array Queue queue = new Queue(table2); queue.CopyTo(table3, 0);//queue->array Stack stack = new Stack(table3); stack.CopyTo(table4, 0);//stack->array foreach (int t in table1) Console.Write(t); Console.WriteLine(); foreach (int t in table2) Console.Write(t); Console.WriteLine(); foreach (int t in table3) Console.Write(t); Console.WriteLine(); foreach (int t in table4) Console.Write(t); Console.WriteLine(); } }
输出结果:
43210000000000000000
12340000000000000000
12340000000000000000
00000000000000004321
相关文章推荐
- 新手菜鸟学习C#的笔记总结 之数组与集合(上)
- 新手菜鸟学习C#的笔记总结 之接口
- 新手菜鸟学习C#的笔记总结 之泛型
- 新手菜鸟学习C#的笔记总结 之委托
- 新手菜鸟学习C#的笔记总结 之事件
- 新手菜鸟学习C#的笔记总结 之多态
- 【C#学习笔记4】C#集合类总结
- 学习笔记 3 C# 数组,集合
- 学习笔记3 上午 C# 数组,集合
- C#学习笔记集合类型之数组(3)
- C#学习笔记12:枚举、结构、数组基础学习
- Java菜鸟学习笔记--数组篇(二):数组实例&args实例
- c#学习笔记对IEnumerable<T>,IDictionary<Tkey,TValue>,ICollection<T>,IList<T>的总结
- C#学习笔记-接口,集合与泛型
- C#学习笔记之——集合
- C#学习笔记之四 C#中数组的创建方法
- Lua学习笔记(六)—— 数组与集合
- 黑马程序员_c#基础知识学习笔记:数组
- C#回顾学习笔记三十八:ADO.NET的使用与总结
- Hibernate 集合属性List 的使用----Hibernate 学习笔记总结(一)