【 塔 · 第 一 条 约 定 】//内容大部分参照网络而整理,有些无法判断正误。
1、整理c#:Array Arraylist List Hashtable Dictionary Stack Queue等
==>数组Array:
int[] a;//初始化数组;
a=new int[3];
a=new int[3]{1,2,3};
a=new int[]{1,2,3};//开辟新空间,赋值
==>动态数组ArrayList:(容量不定)
1)Add()向数组中添加一个元素,
2)Remove()删除数组中的一个元素
3)RemoveAt(int i)删除数组中索引值为i的元素
4)Reverse()反转数组的元素
5)Sort()以从小到大的顺序排列数组的元素
6)Clone()复制一个数组
ArrayList a=new ArrayList();//定义
a.Add(1);//单个添加
int[] numbers=new int[2]{1,2};
a.AddRange(numbers)//将数组numbers中所有元素添加到a中;
a.Remove(2);//移除值为2的元素
a.RemoveAt(2);//移除第二个元素
ArrayList a1=new ArrayList(a.GetRange(1,2));//新的ArrayList a1只取a中的一部分元素
Console.WriteLine(a.Sort());//从小到大输出a中元素
Console.WriteLine(a.Reverse());//反序输出a中所有元素
ArrayList b=new ArrayList();
b=a.Clone();//将a克隆到b
==>强类型列表List(可通过索引访问对象)
List nums=new List();//声明一个List对象,其中T为int,string等类型名
让类型名为int
nums.Add(1);//加入一个元素
nums.Insert(2,3);//往第二个位置加入元素3
nums.Remove(1)//移除指定元素
==>Dictionary:表示键和值的集合。其遍历输出的顺序就是加入的顺序。
常用属性:
1)Comparer:获取Directionary中的键是否相等的IEqualityComparer(判断,返回true或false)
2)Count:获取包含在Dictionary中的键/值对的数目
3)Item:获取或设置与制定的键相关联的值
4)Keys:获取包含Dictionary中的键的集合
5)Values:获取包含Dictionary中值得集合
常用方法:
1)Add:将制定的键和值添加到Dictionary中
2)Clear:从Dictionary中移除所有的键和值
3)ContainsKey:确定Dictionary中是否包含指定的键
4)ContainsValue:确定Dictionary中是否包含特定的值
5)Equals:已重载,确定两个Object实例是否相等
6)GetEnumerator:返回循环访问Dictionary的枚举数
7)GetHashCode:用作特定类型的哈希函数。GetHashCode适合在哈希算法和数据结构(如哈希表)中使用。 (从 Object继承。)
8)GetObjectData :实现 System.Runtime.Serialization.ISerializable接口,并返回序列化 Dictionary实例所需的数据。
9)GetType :获取当前实例的 Type。 (从 Object继承。)
10)OnDeserialization :实现 System.Runtime.Serialization.ISerializable接口,并在完成反序列化之后引发反序列化事件。
11)ReferenceEquals :确定指定的 Object实例是否是相同的实例。 (从 Object继承。)
12)Remove :从 Dictionary中移除所指定的键的值。
13)ToString: 返回表示当前 Object的 String。 (从 Object继承。)
14)TryGetValue :获取与指定的键相关联的值
Dictionary my=new Dictionary();
my.Add("aaa","111");
my.Add("bbb","222");//添加键,且不可重复,否则会抛异常.前一个是建,后一个是值,值可以是数组和类
try
{
my.Add("aaa","111");
}
catch(ArgumentException ex)
{
Console.WriteLine("此键已存在+ex.Messege");
}//捕捉异常,输出异常信息
==>Hashtable类:哈希表。类似于Directionary。哈希表是经过优化的,访问下标的对象先散列过。如果以任意类型键值访问其中元素会快于其他集合。
GetHashCode()方法返回一个int型数据,使用这个键的值生成该int型数据。哈希表获取这个值最后返回一个索引,表示带有给定散列的数据项在字典中存储的位置。
Hashtable 和 Dictionary 类型
1)单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分.
2)多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减.
3)Dictionary 有按插入顺序排列数据的特性 (注: 但当调用 Remove() 删除过节点后顺序被打乱), 因此在需要体现顺序的情境中使用 Dictionary 能获得一定方便.
HashTable中的key/value均为object类型,由包含集合元素的存储桶组成。存储桶是 HashTable中各元素的虚拟子组,与大多数集合中进行的搜索和检索相比,存储桶可令搜索和检索更为便捷。每一存储桶都与一个哈希代码关联,该哈希代码是使用哈希函数生成的并基于该元素的键。HashTable的优点就在于其索引的方式,速度非常快。如果以任意类型键值访问其中元素会快于其他集合,特别是当数据量特别大的时候,效率差别尤其大。
HashTable的应用场合有:做对象缓存,树递归算法的替代,和各种需提升效率的场合。
System.Collections.Hashtable ht = new System.Collections.Hashtable(); //声明
ht.Add(1, "apple");
ht.Add(2, "banana");
ht.Add(3, "orange"); //键不可重复和空
HashTable是经过优化的,访问下标的对象先散列过,所以内部是无序散列的,保证了高效率,也就是说,其输出不是按照开始加入的顺序,而Dictionary遍历输出的顺序,就是加入的顺序,这点与Hashtable不同。
==>SortedList类:与哈希表类似,区别在SortedList中的Key数组是排好序的
System.Collections.SortedList list=new System.Collections.SortedList();
list.Add("key2",2);
list.Add("key1",1);
for(int i=0;i
{
System.Console.WriteLine(list.GetKey(i));
}
==>Srack类,栈。后进先出。push方法入栈,pop方法出栈。
System.Collections.Stack stack=new System.Collections.Stack();
stack.Push(1);
stack.Push(2);
System.Console.WriteLine(stack.Peek());
while(stack.Count>0)
{
System.Console.WriteLine(stack.Pop());
}
==>Queue类:队列,先进先出,enqueue方法入队列,dequeue放大出队列。
System.Collections.Queue queue=new System.Collections.Queue();
queue.Enqueue(1);
queue.Enqueue(2);
System.Console.WriteLine(queue.Peek());
while(queue.Count>0)
{
System.Console.WriteLine(queue.Dequeue());
}
2、整理C#:for、foreach、while、switch等
==>for循环:与c,c++中方法类似
int i,n=18;
for(i=1;i
{
......
}
==>foreach,遍历
foreach(int i int n)
{
ConSole.WriteLine(a[i]);
}//输出数组a中0到n个元素
==>while
while(判断条件)
{
........
}//当判断条件为真时,执行括号中语句
==>switch
switch(state)
{
case 1:i=1;break;
case 2:i=2;break;
......
case n:i=n;break;
default:i=0;break;
}//判断state的值分别执行其对应分支的语句,末尾要加break以种植switch,若无一符合执行default后的语句
分享:
0