• 索引器、哈希表Hashtabl、字典Dictionary(转)


    一、索引器

    索引器类似于属性,不同之处在于它们的get访问器采用参数。要声明类或结构上的索引器,使用this关键字。

    示例:

     
    索引器示例代码
    /// <summary>
    /// 存储星期几的类。声明了一个get访问器,它接受字符串,并返回相应的整数
    /// </summary>
    public class 星期
    {
        public string[] weeks = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };

        //索引器 它接受星期几的字符串,将它作为索引index
        public int this[string day]
        {
           //get访问器 并返回相应的整数
            get
           {
                int i = 0;

                foreach (var item in weeks)
                {
                    if (item == day)
                    {
                        return i;
                    }
                    i++;
                }

                //没找到返回-1
                return -1;
            }
        }
    }
     

      

     

    二、哈希表Hashtable

    Hastable是哈希表的实现,能根据关键字取关键值,这key的类型是object, value的类型也是object。

    在哈希表中添加一个key/value键值对:HashtableObject.Add(key,value);

    在哈希表中去除某个key/value键值对:HashtableObject.Remove(key);

    从哈希表中移除所有元素:                  HashtableObject.Clear(); 

    判断哈希表是否包含特定键key:          HashtableObject.Contains(key);

    遍历Hashtable对象的两种方法:

    由于Hashtable每个元素都是一个键/值对,因此元素类型既不是键的类型,也不是值的类型,而是DictionaryEntry类型。  

     
    Hashtable示例代码
    //方法一
    foreach (System.Collections.DictionaryEntry de in myHashtable)
    {
        //注意HastTable内存储的默认类型是object,需要进行转换才可以输出
        Console.WriteLine(de.Key.ToString());
        Console.WriteLine(de.Value.ToString());
    }


    //方法二
    System.Collections.IDictionaryEnumerator enumerator = myHashtable.GetEnumerator();

    while (enumerator.MoveNext())
    {
        Console.WriteLine(enumerator.Key);       // Hashtable关健字
        Console.WriteLine(enumerator.Value);      // Hashtable值
    }
     

    三、字典Dictionary

    Dictionary<Tkey,Tvalue>是Hastbale的泛型实现。 

     
    //遍历键
    foreach (string key in myDictionary.Keys)
    {
        //遍历某键的值
        foreach (string val in myDictionary[key])
        {

        }
    }
     

    由于 Dictionary 是键和值的集合,因此元素类型并非键类型或值类型。相反,元素类型是键类型和值类型的 KeyValuePair。 

     
    字典遍历示例
    foreach (KeyValuePair<string, string> kvp in myDictionary)
    {
        string key = kvp.Key;//key包含了字典里的键
        for (int i = 0; i < kvp.Value.Count; i++)
        {
            Response.Write(kvp.Value[i]);
        }
    }
     

    示例: 

     

    代码

    //定义一个<string,int>的Dictionary,让它的值进行添加(也可以用Add方法)
    Dictionary<string, int> dic = new Dictionary<string, int>();

    //添加两个键为"成绩1","成绩2";并为它们的值赋为0
    dic["成绩1"] = 0;
    dic["成绩2"] = 0;

    // 把这两个值分别加1
    dic["成绩1"]++;
    dic["成绩2"]++;
  • 相关阅读:
    js实现element中可清空的输入框(1)
    vue中v-model的学习
    Oracle触发器和MySQL触发器的简单应用
    Java中的多线程你只要看这一篇就够了()
    HTML 随笔记之 刷新页面
    HTML CSS 随笔记之 cursor
    float到底是干什么的?
    Spring Boot 事物的快速应用
    java web 中文乱码
    LVM 创建实例
  • 原文地址:https://www.cnblogs.com/candyzhmm/p/5612093.html
Copyright © 2020-2023  润新知