程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> C# Dictionary集合的使用

C# Dictionary集合的使用

編輯:C#基礎知識

題目:輸入一串字符串字母,比如:Welcome to China,比較每個字母出現的次數,不區分大小寫。

解決這道題的方法很多。可能一百個人有一百個思路。當時第一眼看到這個題我的思路是:先將接受的一串字符轉成小寫,寫一個for循環,將字符串每一個元素與26英文字母都比一次。但是發現這樣很難實現,因為出現的字母和出現的次數怎麼對應起來。

什麼對應什麼,有沒發現這就是集合的思想,一個鍵值對就能搞定。

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/// <summary>
/// 用戶輸入一串英文字母,算出每個字母出現的次數,不區分大小寫
/// </summary>
namespace CollectionLession
{
    class Program
    {
        static void Main(string[] args)
        {
            var dic = new Dictionary<char, int>();
            Console.WriteLine("請輸入一句英文");
            string str = Console.ReadLine().ToLower();   //接受輸入並且轉成小寫
            char[] chs = str.ToCharArray();
            for (int i = 0; i < chs.Length; i++)
            {
                if (dic.Count > 0)
                {
                    if (dic.ContainsKey(chs[i])) 
                    {
                        dic[chs[i]] += 1;
                    }
                    else
                        dic.Add(chs[i], 1);
                }//end if 
                else
                {
                    dic.Add(chs[i], 1);
                }//end else
            }//end for
            //遍歷輸出一遍集合,但是不輸出空格
            foreach (var item in dic)
            {
                if (item.Key.Equals(' '))
                    continue;
                else
                    Console.WriteLine("{0} 出現{1}", item.Key, item.Value);
            }//end foreach
            Console.ReadKey();
            
        }
    }
}

這樣就搞定了

可能大家在問為什麼不用另一個鍵值對集合Hashtable。

Hashtable是非泛型集合,不妨聲明一個Hashtable然後按F12找到Hashtable這個類看看

//
        // 摘要:
        //     將帶有指定鍵和值的元素添加到 System.Collections.Hashtable 中。
        //
        // 參數:
        //   key:
        //     要添加的元素的鍵。
        //
        //   value:
        //     要添加的元素的值。該值可以為 null。
        //
        // 異常:
        //   T:System.ArgumentNullException:
        //     key 為 null。
        //
        //   T:System.ArgumentException:
        //     System.Collections.Hashtable 中已存在具有相同鍵的元素。
        //
        //   T:System.NotSupportedException:
        //     System.Collections.Hashtable 為只讀。- 或 - System.Collections.Hashtable 具有固定大小。
        [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
        public virtual void Add(object key, object value);

Hashtable的key和value是object類型的,而object類型是不能使用運算符的。比如下圖

雖然可以使用強制類型轉換實現功能,但是還是沒有泛型集合Dictionary好用啦

寶寶是那種能不多寫一行代碼就不願多寫一行代碼的猿類

這個代碼寫了兩遍,既然犯了同一個錯誤

這樣寫是會把空格都輸出的,有時候腦子不好使還真發現不了問題。

因為key是char類型的,所有要用' '符號,“”是字符串類型的時候用的。

如果寫成這樣就回很容易看出問題,

總之作為一名程序員,要有敏銳的器官。。。一定要對類型較真才行

tip:不懂的代碼多按按f12查看是怎麼聲明的,注釋很全,大概就清楚怎麼用了

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved