前言
“不积跬步,无以至千里;不积小流,无以成江海”
Array 简单赋值,取值,及排序
Array 类是 C# 中所有数组的基类,它是在 System 命名空间中定义。Array 类提供了各种用于数组的属性和方法。
Array arr = Array.CreateInstance(typeof(string), 5);
//赋值,用“SetValue”给数组赋值
arr.SetValue("金庸",0);
arr.SetValue("红楼梦",1);
arr.SetValue("三国演义",2);
arr.SetValue("水浒传",3);
arr.SetValue("西游记",4);
Console.WriteLine("数组元素有:"+ arr.Length); //” arr.Length“为数组长度
Console.WriteLine("数组元素有:\n");
//用for 循环,把值都给循环出来;
for (int i = 0; i < arr.Length; i++)
{
Console.WriteLine("第{0}个元素为:[{1}]",i+1, arr.GetValue(i)); //取值用“.GetValue”表示
}
Array.Sort(); 数组元素排序
Array.Reverse();数组元素反转
详细介绍 Array https://www.runoob.com/csharp/csharp-array-class.html
ArrayList 简单使用
动态数组(ArrayList)代表了可被单独索引的对象的有序集合。它基本上可以替代一个数组。但是,与数组不同的是,您可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整它的大小。它也允许在列表中进行动态内存分配、增加、搜索、排序各项。
//添加引用 using System.Collections;
ArrayList list = new ArrayList(); //实例化一个弱类型的集合 此集合,无论任何类型都能放入进去
list.Add(Convert.ToDateTime("2020-04-01")); //所以一点都不安全称为【弱类型】
list.Add("第一");
list.Add(false);
int[] num = new int[] {
8,7,6,9,3,5,8,4,32,9,85};
list.AddRange(num);
for (int i = 0; i < list.Count; i++)
{
if (i == 0)
{
Console.WriteLine("{0}" + ((DateTime)list[i]).AddDays(10) + "{1}" + list[i].GetType(), "这是值:", "这是数据类型");
}
else
{
Console.WriteLine("{0}" + list[i] + "{1}" + list[i].GetType(), "这是值:", "这是数据类型");
}
Console.ReadKey(); //任意键继续
}
//list.AddRange(list);
list.Clear();清空所有元素
list.Remove(true);删除单个元素 写谁就删谁
list.RemoveAt(0);根据下标去删除元素
list.RemoveRange(0, 3);根据下标去移除一定范围的元素
list.Insert(1, “插入的”);在指定的位置插入一个元素
list.InsertRange(0, new string[] { “张三”, “李四” });在指定的位置插入一个集合
bool b = list.Contains(1);判断是否包含某个指定的元素
Dictioneary集合的运用
必须包含名空间System.Collection.Generic
Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值)
键必须是唯一的,而值不需要唯一的
键和值都可以是任何类型(比如:string, int, 自定义类型,等等)
通过一个键读取一个值的时间是接近O(1)
键值对之间的偏序可以不定义
同时Dictionary<string, string>是一个泛型,他本身有集合的功能有时候可以把它看成数组,他的结构是这样的:Dictionary<[key], [value]>他的特点是存入对象是需要与[key]值一一对应的存入该泛型,通过某一个一定的[key]去找到对应的值
Dictionary<string, string> Dy = new Dictionary<string, string>();
Dy.Add("Name","张三");
Dy.Add("Sex", "男");
Dy.Add("Ipone", "13896547896");
if (Dy.ContainsKey("Name")) //判断键值是否存在
{
Console.WriteLine("已存在");
}
foreach (var items in Dy)
{
Console.WriteLine("键名称"+items.Key+"键值:"+items.Value);
}
Hashtable 的运用
Hashtable 类代表了一系列基于键的哈希代码组织起来的键/值对。它使用键来访问集合中的元素。
当您使用键访问元素时,则使用哈希表,而且您可以识别一个有用的键值。哈希表中的每一项都有一个键/值对。键用于访问集合中的项目。
一、使用hashtable前,需要添加System.Collections的引用。
using System.Collections;
二、添加元素
Hashtable ht =new Hashtable();
ht.Add(key,value);// key,value可以是任何类型
如果key有重复会掷出运行时异常,你可以这样处理。
if(ht.Contains(key)==false)
{
ht.Add(key,value);// 不存在则添加
}
也可以这样处理,效率要高些
Try
{
ht.Add(key,value);
}
Catch
{
// 不处理重复异常
}
Hashtable ht = new Hashtable(); //创建一个Hashtable实例
ht.Add("E", "e"); //添加key/value键值对
ht.Add("A", "a");
ht.Add("B", "b");
ht.Add("C", "c");
ht.Add("D", "d");
bool b = ht.Contains("E");
//判断哈希表是否包含特定键,其返回值为true或false
Console.WriteLine("判断哈希表是否包含E键(有就返回true/false):“"+b+"”");
Console.WriteLine("the E key:exist");
ht.Remove("C"); //移除一个key/value键值对
Console.WriteLine("\n此处输出Key[“A”]:\t" + ht["A"]); //此处输出a
foreach (DictionaryEntry myde in ht)
{
Console.WriteLine("\t{0}\t{1}", myde.Key, myde.Value); //输出键和值
}
ht.Clear(); //移除所有元素
Console.WriteLine(ht["A"]); //此处将不会有任何输出
foreach (DictionaryEntry my in ht)
{
Console.WriteLine("\t{0}\t{1}", my.Key, my.Value); //输出键和值
}
Console.WriteLine("这里不会有输出"); //这里不会有输出
Console.ReadLine();
五、判断键是否已经存在
ht.Contains(key) // 这个刚才已经用过了
六、遍历键
foreach(Object key in ht.Keys)
{
}
七、遍历值
foreach(Object value in ht.Values)
{
}
八、同时遍历键值对
foreach(DictionaryEntry de in ht)
{
Console.WriteLine(de.Key);// 取得键
Console.WriteLine(de.Value);// 取得值
}
List 集合的运用
//泛型集合
//创建泛型集合对象
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.AddRange(new int[] {
1, 2, 3, 4, 5, 6 });
//list.AddRange(list);//可以添加集合本身
//List泛型集合可以转换为数组
int[] nums = list.ToArray();//集合装换为数组
Console.WriteLine("集合转换为数组输出:");
for (int i = 0; i < nums.Length; i++)
{
Console.WriteLine(nums[i]);
}
List<int> listInt= nums.ToList();//数组转换为集合
Console.WriteLine("数组转换为集合输出:");
for (int i = 0; i <listInt.Count; i++)
{
Console.WriteLine(listInt[i]);
}
Console.ReadKey();
强类型,弱类型