c#编程语言基础14

ArrayList

ArrayList中可以添加任意类型的数据,但是在获取数据的时候有时候会麻烦一些

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

namespace ArrayListDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList list = new ArrayList();
            //获取集合元素的数量
            Console.WriteLine(list.Count);
            //向集合中添加数据
            list.Add(2);
            list.Add(3);
            list.Add(4);
            list.Add(5);
            list.Add(6);
            list.Add(7);
            Console.WriteLine(list.Capacity);

            list.Add(new Student());
            //向集合中添加一个新的集合
            //list.AddRange(list);
            //list集合中是否包含100
            bool ret = list.Contains(100);
            Console.WriteLine(ret);
            //从下标为1的位置取3个元素做为新的结合返回
            ArrayList arraylist = list.GetRange(1, 3);// 3 4 5

            //foreach  是对集合做修改  遍历操作  禁止对foreach做删除操作
            //foreach (var item in arraylist)
            //{
            //    if ((int)item == 4)
            //    {
            //        list.Remove(item);
            //    }
            //}
            //返回元素为4所在的下标
            int index = list.IndexOf(4);
            Console.WriteLine(index);
            //在下标为1的位置插入100
            list.Insert(1,100);
            //删除指定下标的元素
            list.RemoveAt(1);
            //反转
            list.Reverse();
            //排序
            list.Sort();
            Console.WriteLine("----------");
            foreach (var item in list)
            {
                Console.WriteLine(item);
            }
        }
    }
}

Hashtable

Hashtable中存放元素的信息都是乱序的

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

namespace HashtableDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //在 Hashtable 这样的集合中 存储的顺序是乱序的 
            Hashtable ht = new Hashtable();
            ht.Add("北京","重度雾霾");
            ht.Add("上海", "梅雨");
            ht.Add("郑州","霾");
            Console.WriteLine(ht["北京"]);
            ht["石家庄"] = "123";
            bool ret = ht.Contains("石家庄");
            Console.WriteLine(ret);
            //移除键为郑州的项
            //ht.Remove("郑州");
            //集合中是否包含键为"郑州"的值
            ret = ht.Contains("郑州");
            Console.WriteLine(ret);
            //对集合遍历
            foreach (var item in ht.Keys)
            {
                Console.WriteLine(item +"  "+ht[item]);
            }
        }
    }
}

List泛型集合

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

namespace 泛型结合
{
    class Program
    {
        static void Main(string[] args)
        {
            //ArrayList list = new ArrayList();
            Add方法的参数类型是object类型 在传递参数的时候整型1会转化成object类型  这样属于装箱操作
            //list.Add(1);
            如果实现  list[0] + 2  得到正确的结果  要将list[0]转化成int类型  也就是说要进行拆箱操作  
            //Console.WriteLine((int)list[0] + 2);


            //泛型结合在声明的时候已经确定了里面的元素类型
            List<string> list = new List<string>();
            //里面的传入的数据类型只能和声明时定义的类型保持一致
            //泛型能在编译时,提供强大的类型检查,减少数据类型之间的显示转化、装箱操作和运行时的类型检查。
            list.Add("C#编程之道");
            list.Add("C#从入门到精通");
            list.AddRange(list);
            Console.WriteLine(list.Count);

            bool ret = list.Contains("C#编程之道");
            Console.WriteLine(ret);

            int index = list.IndexOf("C#从入门到精通", 2);
            Console.WriteLine(index);

            List<int> numList = new List<int>();
            numList.Add(1);
            numList.Add(2);
            numList.Add(5);
            numList.Add(1);
            numList.Add(2);
            numList.Add(2);
            numList.Add(4);

            List<int> newList = numList.GetRange(0, numList.Count);

            index = -1;
            //记录查找元素的数量
            int count = 0;
            while (newList.IndexOf(2) != -1)
            {
                index = newList.IndexOf(2);
                count++;
                newList.RemoveAt(index);

            }
            Console.WriteLine(count);
            Console.WriteLine("-------------------------");

            foreach (var item in numList)
            {
                Console.WriteLine(item);
            }
        }
    }
}

Dictionary泛型结合

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Collections.Generic.Dictionary<string, string>;
namespace 字典
{
    class Program
    {
        static void Main(string[] args)
        {
            //Test01();
            //Test02();

            Test03();
        }


        static void Test01()
        {
            Dictionary<string, string> dic = new Dictionary<string, string>();
            dic.Add("张杰", "高飞");
            dic.Add("刘欢", "好汉歌");
            //在一个字典中 键是唯一的
            //在一个字典中不同的键可以对应相同的值
            dic.Add("周杰伦", "青花瓷");
            dic.Add("刘英", "青花瓷");
            bool key = dic.ContainsKey("周杰伦");
            Console.WriteLine(key);
            bool value = dic.ContainsValue("好汉歌");
            Console.WriteLine(value);
            KeyCollection keys = dic.Keys;
            //dic.Remove("刘英");
            foreach (var item in keys)
            {
                Console.WriteLine(item);
            }

        }
        static void Test02()
        {
            Dictionary<string, Book> books = new Dictionary<string, Book>();
            books.Add("0000000",new Book("C#编程之道",56,"王垚"));
            books.Add("0000001", new Book("C#从入门到精通", 98, "YY"));
            books.Add("0000002", new Book("C#从入门到放弃", 2, "亚东"));

            foreach (var item in books)
            {
                Console.WriteLine(item.Key +" " + item.Value.Price);
            }

        }
        //有序字典
        static void Test03()
        {
            SortedDictionary<string, string> dic = new SortedDictionary<string, string>();
            dic.Add("张杰", "高飞");
            dic.Add("刘欢", "好汉歌");
            //在一个字典中 键是唯一的
            //在一个字典中不同的键可以对应相同的值
            dic.Add("周杰伦", "青花瓷");
            dic.Add("刘英", "青花瓷");
            dic.Add("asdef", "青花瓷");
            dic.Add("asdeh", "青花瓷");
            bool key = dic.ContainsKey("周杰伦");
            Console.WriteLine(key);
            bool value = dic.ContainsValue("好汉歌");
            Console.WriteLine(value);


            foreach (KeyValuePair<string,string> item in dic)
            {
                Console.WriteLine(item.Key);
            }

        }
    }
}

HashSet泛型集合

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

namespace HashSet
{
    class Program
    {
        static void Main(string[] args)
        {
            HashSet<int> hs = new HashSet<int>();
            //hs.Add(1);
            //Console.WriteLine(hs.Count);
            //hs.Add(2);
            //Console.WriteLine(hs.Count);
            //hs.Add(1);
            //Console.WriteLine(hs.Count);
            //HashSet是不能重复添加相同的元素的
            //在结合中添加100个1-100的随机数
            Random random = new Random();
            while (hs.Count < 100)
            {
                hs.Add(random.Next(1, 101));
            }

            foreach (var item in hs)
            {
                Console.WriteLine(item);
            }
        }
    }
}

Stack 栈

栈是一种先进后出的集合

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

namespace{
    class Program
    {
        static void Main(string[] args)
        {

            Console.WriteLine(Test02(30, 26));

        }

        static void Test()
        {
            //FILO   first in last out
            Stack stack = new Stack();
            //将数据压入到栈
            stack.Push(1);
            stack.Push(2);
            stack.Push(3);
            //Console.WriteLine(stack.Count);

            //弹出栈顶数据   就是删除栈顶元素
            stack.Pop();
            //获取栈顶元素
            object numberObj = stack.Peek();
            Console.WriteLine(numberObj);
            foreach (var item in stack)
            {
                Console.WriteLine(item);

            }
        }

        static string Test02(int number,int baseNumber)
        {
            Stack<char> statck = new Stack<char>();
            while (number/baseNumber !=0)
            {
                statck.Push( (char)(number % baseNumber +'a'));
                number /= baseNumber;
            }
            statck.Push((char)(number + 'a'));
            return new string(statck.ToArray());
        }
    }
}

队列Queue

队列是先进先出的 使用队列做类似约瑟夫环的题目是比较方便的

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

namespace 队列
{
    class Program
    {
        static void Main(string[] args)
        {
            Queue queue = new Queue();
            //EnterQueue  入队
            queue.Enqueue(1);
            queue.Enqueue(2);
            queue.Enqueue(3);
            //DeleteQueue
            queue.Dequeue();
            //peek 不影响队列中的元素的
            object obj = queue.Peek();
            Console.WriteLine(obj + "   ++++");
            foreach (var item in queue)
            {
                Console.WriteLine(item);
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值