在C#中的 Array数组基类,ArrayList有序集合,Dictioneary泛型,Hashtable及List 集合的取值赋值

前言

“不积跬步,无以至千里;不积小流,无以成江海”

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();

强类型,弱类型

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/WenRouDG/article/details/108966154