六、C#入门基础06(集合)

一、ArrayList类?

ArrayList类位于System.Collections命名空间下,它可以动态地添加和删除元素。可以将ArrayList类看作扩充了功能的数组,但是它并不等同于数组。
与数组相比,ArrayList类提供以下功能。
1.1数组的容量是固定的,而ArrayList的容量可以根据需要自动扩充。
1.2ArrayList提供添加,删除和插入某一范围元素的方法,但在数组中,只能一次获取或设置一个元素的值。
1.3ArrayList提供将只读和固定大小包装返回到集合的方法,而数组不提供。
1.4ArrayList只能是一维形式,而数组可以是多维的

声明ArrayList对象:
ArrayList arrayList = new ArrayList();

ArrayList常用方法:
这里写图片描述
这里写图片描述

二、Hashtable(哈希表)?

HashTable通常称为哈希表,它表示键/值对的集合,这些键/值对根据键的哈希代码进行组织。它的每一个元素都是一个存储在DictionaryEntry对象中的键/值对。键不能为空引用,但值可以。

声明HashTable对象:
Hashtable hashtable = new Hashtable();

HashTable常用方法:
这里写图片描述

三、SortedList(排序列表)?

SortedList类代表了一系列按照键来排序的键/值对,这些键值对可以通过键和索引来访问。
排序列表是数组和哈希表的结合。它包含一个可使用键或索引访问的各项的列表。如果使用索引访问各项,则它是一个ArrayList,如果使用键访问各项,则它是一个哈希表。集合中的各项重视按键值排序。

声明SortedList对象:
SortedList sl= new SortedList();

SortedList常用方法:
这里写图片描述
这里写图片描述
这里写图片描述

四、堆栈(Stack)?

堆栈代表一个后进先出的对象集合。需要对各项进行后进先出的访问时,则使用堆栈。在列表中添加一项,则称为推入元素,移除一项时,称为弹出元素。

声明Stack对象:
Stack st= new Stack();

Stack常用方法:
这里写图片描述

五、队列(Queue)?

队列(Queue)代表了一个先进先出的对象集合。对各项进行先进先出的访问时,则使用队列。添加一项则称为入队。移除一项时则称为出队。

声明Queue对象:
Queue q= new Queue();

Queue常用方法:
这里写图片描述

六、代码:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _06
{
    class Program
    {
        static void Main(string[] args)
        {
            #region ArrayLiat           
            //集合 就是一个动态的数组 动态 根据你插入的信息的个数来决定集合的个数(长度)
            //ArrayList arraylist = new ArrayList();
            //1.添加
            //Add 返回的结果应该是成功 或者 失败 
            //实际返回的结果是当前插入进去集合中的下标位置
            //Console.WriteLine(arraylist.Add("A"));
            //arraylist.Add(1);
            //arraylist.Add('c');
            //Console.WriteLine(arraylist.Add(true));
            //个数(长度)
            //Console.WriteLine(arraylist.Count);
            //判断当前的元素是否在集合中
            //Console.WriteLine(arraylist.Contains(2));
            //判断当前的元素在集合中的位置(下标)   如果元素不在集合中那么默认返回的下标数是 -1
            //Console.WriteLine(arraylist.IndexOf(false));
            //插入  能够指定插入的位置
            //arraylist.Insert(0,"张三");
            //如何获取单个的值?[]
            //Console.WriteLine(arraylist[0]);
            //循环 for foreach 
            //for (int i = 0; i < arraylist.Count; i++)
            //{
            //    Console.WriteLine(arraylist[i]);
            //}
            //Console.WriteLine("..........................");

            //Console.WriteLine("delete.....................");
            //删除一个 清空当前的某一个元素的值而已  但是集合的数量不变
            //for (int i = 0; i < arraylist.Count; i++)
            //{
            //    if (arraylist[i].Equals(true))
            //    {
            //        arraylist[i] = null;
            //        break;
            //    }
            //}
            //Console.WriteLine(arraylist.Count);

            //foreach (object o in arraylist)
            //{
            //    Console.WriteLine(o);
            //}

            //排序
            //arraylist.Sort();

            //删除单个元素  并且改变集合数量
            //arraylist.Remove(null);
            //Console.WriteLine(arraylist.Count);
            //删除全部 清空
            //arraylist.Clear();
            //Console.WriteLine(arraylist.Count);

            //把一个集合合并到另外一个集合中 是从最后一个位置开始的
            //ArrayList a1 = new ArrayList();
            //a1.Add(1);
            //a1.Add(2);
            //a1.Add(3);
            //a1.Add(4);
            //ArrayList a2 = new ArrayList();
            //a2.Add(5);
            //a2.Add(6);
            //a2.Add(7);
            //Console.WriteLine("合并前"+a1.Count);
            ////将a1和a2 合并为一个集合
            //a1.AddRange(a2);
            //Console.WriteLine("合并后" + a1.Count);

            //foreach (object o in a1)
            //{
            //    Console.WriteLine(o);
            //}

            //插入
            //ArrayList a1 = new ArrayList();
            //a1.Add(1);
            //a1.Add(2);
            //a1.Add(3);
            //a1.Add(4);
            //ArrayList a2 = new ArrayList();
            //a2.Add(5);
            //a2.Add(6);
            //a2.Add(7);

            //a1.InsertRange(0,a2);

            //for (int i = 0; i < a2.Count; i++)
            //{
            //    a1.Add(a2[i]);
            //}

            //foreach (object o in a2)
            //{
            //    a1.Add(o);
            //}

            //foreach (object o in a1)
            //{
            //    Console.WriteLine(o);
            //}
            //Console.ReadKey();

            #endregion

            #region Hashtable 键值对 键 不能够重名 如果重名就会报错
            //Hashtable ht = new Hashtable();
            //ht.Add("ZH","中国");
            //ht.Add("EN","英国");
            //ht.Add("UA","美国");
            //ht.Add("HK","香港");
            //返回的是当前表里面的所有的keys
            //foreach (object o in ht.Keys)
            //{
            //    Console.WriteLine(o);
            //}
            //返回的是当前表里面的所有的values
            //foreach (object o in ht.Values)
            //{
            //    Console.WriteLine(o);
            //}
            //如何得到一个对象
            //Console.WriteLine(ht["HK"]);


            //if (ht.ContainsKey("HK"))
            //{
            //    ht.Add("AM","澳门");  
            //}

            //输出整张表的内容
            //foreach (object k in ht.Keys)
            //{
            //    Console.WriteLine("{0}..................{1}", k, ht[k]);
            //}

            //Console.WriteLine("Remove............................");
            //ht.Remove("AM");
            //输出整张表的内容
            //foreach (object k in ht.Keys)
            //{
            //    Console.WriteLine("{0}..................{1}", k, ht[k]);
            //}
            //Console.ReadKey();

            #endregion

            #region  SortedList 有序列表  ArrayLiat和Hashtable的结合体
            //SortedList sl = new SortedList();
            //sl.Add("ZH", "中国");
            //sl.Add("EN", "英国");
            //sl.Add("UA", "美国");
            //sl.Add("HK", "香港");
            //sl.Remove("HK");
            //如果用下标进行输出 ArrayLiat
            //for (int i = 0; i < sl.Count; i++)
            //{
            //    //sl.GetKey(i) 根据下标获取key
            //    //然后根据key来获取value
            //    Console.WriteLine(sl[sl.GetKey(i)]);
            //}
            //Console.WriteLine("..............");
            //foreach (object o in sl.GetValueList())
            //{
            //    Console.WriteLine(o);
            //}
            //Console.WriteLine("..............");
            //foreach (object o in sl.GetKeyList())
            //{
            //    Console.WriteLine(o);
            //}
            //for (int i = 0; i < sl.Count; i++)
            //{
            //    Console.WriteLine(sl.GetKey(i));
            //}
            //sl.Clear();
            //Console.WriteLine(sl.Count);

            //Console.ReadKey();
            #endregion

            #region Stack 堆栈 后进先出
            //Stack st = new Stack();
            //st.Push(1);
            //st.Push(2);
            //st.Push(3);
            //st.Push(4);
            //循环输出
            //foreach (object o in st)
            //{
            //    Console.WriteLine(o);
            //}
            //找到栈顶元素
            //Console.WriteLine(st.Peek());
            //移除
            //st.Clear();
            //Console.ReadKey();
            #endregion

            #region Queue 队列 先进先出
            //Queue q = new Queue();
            //q.Enqueue(1);
            //q.Enqueue(2);
            //q.Enqueue(3);
            //q.GetEnumerator();
            //foreach (object o in q)
            //{
            //    Console.WriteLine(o);
            //}
            //Console.ReadKey();
            #endregion

            #region 集合重要的方法
            //Add  添加元素
            //Clear 清空集合所有的元素
            //remove 移除指定的元素 并且会影响集合的数量
            //insert 插入 指定位置插入元素
            //Contains 判断当前的元素是否存在于集合中
            //indexOf 得到元素的下标位置 -1 则代表未找到元素 =当前的元素不存在于集合中
            //IEnumerable  枚举器  针对底层实现
            #endregion



        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_43023809/article/details/82635185