zoukankan      html  css  js  c++  java
  • Dictionary Queue Stack SortedList ArrayList

    ArrayList 类:使用大小可按需动态增加的数组。

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;
    namespace ConsoleApplication1
    {
        
    class Program
        
    {
            
    static void Main(string[] args)
            
    {
                 ArrayList al
    = new ArrayList();
                 al.Add(
    100);//单个添加
                foreach (int number in new int[6] { 9, 3, 7, 2, 4, 8 })
                
    {
                     al.Add(number);
    //集体添加方法一
                 }
                
    int[] number2 = new int[2] { 11, 12 };
                 al.AddRange(number2);
    //集体添加方法二
                 al.Remove(3);//移除值为3的
                 al.RemoveAt(3);//移除第3个
                 ArrayList al2 = new ArrayList(al.GetRange(1, 3));//新ArrayList只取旧ArrayList一部份


                 Console.WriteLine(
    "遍历方法一:");
                
    foreach (int i in al)//不要强制转换
                {
                     Console.WriteLine(i);
    //遍历方法一
                 }

                 Console.WriteLine(
    "遍历方法二:");
                
    for (int i = 0; i < al2.Count; i++)//数组是length
                {
                    
    int number = (int)al2[i];//一定要强制转换
                     Console.WriteLine(number);//遍历方法二

                 }

             }

         }

    }

    C# 集合类(二):Queue
    Posted on 2008-01-14 10:16 无锋不起浪 阅读(413) 评论(3) 编辑 收藏 所属分类: C# 2.0
    Queue:队列,表示对象的先进先出集合。Enqueue方法入队列,Dequeue方法出队列。

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Queue qu = new Queue();
                Queue qu2 = new Queue();
                foreach (int i in new int[4] { 1, 2, 3, 4 })
                {
                    qu.Enqueue(i);//入队
                    qu2.Enqueue(i);
                }

                foreach (int i in qu)
                {
                    Console.WriteLine(i);//遍历
                }

                qu.Dequeue();//出队
                Console.WriteLine("Dequeue");
                foreach (int i in qu)
                {
                    Console.WriteLine(i);
                }

                qu2.Peek();//返回位于 Queue 开始处的对象但不将其移除。
                Console.WriteLine("Peek");
                foreach (int i in qu2)
                {
                    Console.WriteLine(i);
                }
            }
        }

    C# 集合类(三):Stack

    Stack:栈,表示对象的简单的后进先出非泛型集合。Push方法入栈,Pop方法出栈。


    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Stack sk = new Stack();
                Stack sk2 = new Stack();
                foreach (int i in new int[4] { 1, 2, 3, 4 })
                {
                    sk.Push(i);//入栈
                    sk2.Push(i);
                }

                foreach (int i in sk)
                {
                    Console.WriteLine(i);//遍历
                }

                sk.Pop();//出栈
                Console.WriteLine("Pop");
                foreach (int i in sk)
                {
                    Console.WriteLine(i);
                }

                sk2.Peek();//弹出最后一项不删除
                Console.WriteLine("Peek");
                foreach (int i in sk2)
                {
                    Console.WriteLine(i);
                }
            }
        }
    }


    C# 集合类(五):SortedList

    SortedList类:表示键/值对的集合,与哈希表类似,区别在于SortedList中的Key数组排好序的。
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;
    namespace ConsoleApplication1
    {
        class Program
        {
            public static void Main()
            {
                SortedList sl = new SortedList();
                sl["c"] = 41;
                sl["a"] = 42;
                sl["d"] = 11;
                sl["b"] = 13;

                foreach (DictionaryEntry element in sl)
                {
                    string s = (string)element.Key;
                    int i = (int)element.Value;
                    Console.WriteLine("{0},{1}", s, i);
                }
            }
        }
    }

    C# 集合类(六):Dictionary 泛型集合


    泛型最常见的用途是泛型集合,命名空间System.Collections.Generic 中包含了一些基于泛型的集合类,使用泛型集合类可

    以提供更高的类型安全性,还有更高的性能,避免了非泛型集合的重复的装箱和拆箱。
        很多非泛型集合类都有对应的泛型集合类,下面是常用的非泛型集合类以及对应的泛型集合类:
    非泛型集合类 泛型集合类
    ArrayList List<T>
    HashTable DIctionary<T>
    Queue    Queue<T>
    Stack    Stack<T>
    SortedList SortedList<T>

        我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashTable类。我们经常用HashTable 来存储将要写入到数据库

    或者返回的信息,在这之间要不断的进行类型的转化,增加了系统装箱和拆箱的负担,如果我们操纵的数据类型相对确定的

    化 用 Dictionary<TKey,TValue> 集合类来存储数据就方便多了,例如我们需要在电子商务网站中存储用户的购物车信息(

    商品名,对应的商品个数)时,完全可以用 Dictionary<string, int> 来存储购物车信息,而不需要任何的类型转化。

        下面是简单的例子,包括声明,填充键值对,移除键值对,遍历键值对

    Dictionary<string, string> myDic = new Dictionary<string, string>();
        myDic.Add("aaa", "111");
        myDic.Add("bbb", "222");
        myDic.Add("ccc", "333");
        myDic.Add("ddd", "444");
        //如果添加已经存在的键,add方法会抛出异常
        try
        {
            myDic.Add("ddd","ddd");
        }
        catch (ArgumentException ex)
        {
            Console.WriteLine("此键已经存在:" + ex.Message);
        }
        //解决add()异常的方法是用ContainsKey()方法来判断键是否存在
        if (!myDic.ContainsKey("ddd"))
        {
            myDic.Add("ddd", "ddd");
        }
        else
        {
            Console.WriteLine("此键已经存在:");
       
        }
       
        //而使用索引器来负值时,如果建已经存在,就会修改已有的键的键值,而不会抛出异常
        myDic ["ddd"]="ddd";
        myDic["eee"] = "555";
       
        //使用索引器来取值时,如果键不存在就会引发异常
        try
        {
            Console.WriteLine("不存在的键\"fff\"的键值为:" + myDic["fff"]);
        }
        catch (KeyNotFoundException ex)
        {
            Console.WriteLine("没有找到键引发异常:" + ex.Message);
        }
        //解决上面的异常的方法是使用ContarnsKey() 来判断时候存在键,如果经常要取健值得化最好用 TryGetValue方法来

    获取集合中的对应键值
        string value = "";
        if (myDic.TryGetValue("fff", out value))
        {
            Console.WriteLine("不存在的键\"fff\"的键值为:" + value );
        }
        else
        {    
            Console.WriteLine("没有找到对应键的键值");
        }
       
        //下面用foreach 来遍历键值对
        //泛型结构体 用来存储健值对
        foreach (KeyValuePair<string, string> kvp in myDic)
        {
            Console.WriteLine("key={0},value={1}", kvp.Key, kvp.Value);
        }
        //获取值得集合
        foreach (string s in myDic.Values)
        {
            Console.WriteLine("value={0}", s);
        }
        //获取值得另一种方式
        Dictionary<string, string>.ValueCollection values = myDic.Values;
        foreach (string s in values)
        {
            Console.WriteLine("value={0}", s);
        }

  • 相关阅读:
    WHU-1551-Pairs(莫队算法+分块实现)
    JS日历控件 灵活设置: 精确的时分秒.
    java集群优化——多线程下的单例模式
    课程设计——银行系统
    互联网金融,巨头天下还是创业者天堂?
    Android 使用图片异步载入框架Universal Image Loader的问题
    程序C++ to C#交互
    浅谈asp.net通过本机cookie仿百度(google)实现搜索input框自己主动弹出搜索提示
    全栈JavaScript之路(十六)HTML5 HTMLDocument 类型的变化
    推荐安卓开发神器(里面有各种UI特效和实例)
  • 原文地址:https://www.cnblogs.com/anmoon/p/1789830.html
Copyright © 2011-2022 走看看