1.集合
ArrayList
Hashtable
这两个集合在添加数据的时候,什么类型的数据都可以,因为是赋给object.但当从中去数据的时候,则会发生强制转换。即:这两个集合会发生拆装箱。
List<>list = new List<>;
list.Add()
list.AddRange()
list.Insert()
list.InsertRange()
list.Remove()
list.RemoveRange()
list.RemoveAt()
list.Contains()//判断是否包含
Dictionary<> dic = new Dictionary<>();
dic.Add();
foreach(KeyValuePair<>kv in dic )
{kv.Key ;kv.Value}
练习1.将int数组中的奇数放到一个新的int数组中返回。
//练习1.将int数组中的奇数放到一个新的int数组中返回。
int[] arr = {1,2,3,4,5,6,7,8,9,0 };
List<int> list = new List<int>();
for (int i = 0; i < arr.Length; i++)
{
if(arr[i]%2 !=0)
{
list.Add(arr[i]);
}
}
arr = list.ToArray();
foreach(var item in arr)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
集合初始化器
List<int>list = new List<int>(){1,2,3,4,5,676,78};
等价与list.AddRange(new int[]1,2,3,4,5,676,78});
对象初始化器
person p = new person(){name = " " , age = 12};
创建一个集合ArrayList
ArrayList list = new ArrayList();
//集合中可以添加任意类型元素
// list.Add主要用于添加单个元素
list.Add(2);
list.Add(3.14);
//list.Add(new int[]{1,2,3,4,5,6});//这个不能直接输出,需要进行类型强制转换后才能输出
//list.Range()用于添加集合元素
list.AddRange(new int []{1,2,3,4,5,6});//采用range添加的集合能后用for输出。
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
list.AddRange(list);//添加list集合
//移除单个元素
list.Remove(true);
//根据下标移除元素
list.RemoveAt(0);
list.Clear();//清空集合
list.RemoveRange(0,4);//根据下标移除一定范围的元素
list.Sort();//升序排列,但必须满足的条件是集合中的元素类型要一致
list.Reverse();//将集合中的元素反转
list.Insert(0,'1');//在指定下标前,插入单个字符
list.InsertRange(0,new int []{1,2,3});//在指定的下标前插入一个集合
bool b = list.Contains(1);//判断集合中是否包含某元素
5.ArrayList集合中的长度问题
每次集合中实际包含的元素的个数(count)超过了包含元素的个数(capacity)的时候,集合就会向内存中申请多开辟一赔的空间,来保证集合的长度一直够用。(按照2的倍数增大)
6.hashtable 键值对集合
var d = 2;//根据赋值推断变量的类型。
键值对集合中,键必须是唯一的,值可以重复。
ht.ContainsKey();//判断是否有某个键
ht.clear();//清空集合中的所有元素
ht.Remove();//根据键去移除元素
Hashtable ht = new Hashtable();
//添加键值对到集合中去
ht.Add(1 ,"张三");
ht.Add(2,2);
ht.Add(false ,"你是错五的");
//添加数据的另一种方式 这种形式的添加数据,如果有键了,则会干掉原有的值,添加新的值
ht[6] = " xinglaisde";
foreach(var item in ht.Keys)
{
Console.WriteLine("键{0} ,值{1}",item,ht[item]);
}