Hashtable, ArrayList, List, Dictionary学习

Hashtable用法
在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中key/value键值对均为object类型,所以Hashtable可以支持任何类型的key/value键值对.。
在哈希表中添加一个key/value键值对:HashtableObject.Add(key,value);
在哈希表中去除某个key/value键值对:HashtableObject.Remove(key);
从哈希表中移除所有元素: HashtableObject.Clear();
判断哈希表是否包含特定键key: HashtableObject.Contains(key);

   Hashtable ht = new Hashtable();
   ht.Add("a", 123);
   ht.Add("b", 456);

   // 遍历哈希表需要用到DictionaryEntry Object
     foreach (DictionaryEntry de in ht)
      {
          MessageBox.Show(de.Key.ToString() + "   " + de.Value.ToString());
      }

   //对哈希表进行排序
    ArrayList akeys = new ArrayList(ht.Keys); //别忘了导入System.Collections
    akeys.Sort(); //按字母顺序进行排序
    foreach (string skey in akeys)
      {
          MessageBox.Show(skey + ":");
          MessageBox.Show(ht[skey].ToString());//排序后输出
      }
ArrayList用法
private static void AddToList(ArrayList list, string p)
        {
            if (list.Contains(p) == false)
                list.Add(p);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ArrayList list = new ArrayList();
            AddToList(list, "Table1");
            AddToList(list, "Table4");
            AddToList(list, "Table1");
            AddToList(list, "Table3");
            AddToList(list, "Table2");
            AddToList(list, "Table2");

            foreach (string s in list)
            {
                MessageBox.Show(s);
            }
       }
List
List<string> listStr = new List<string>();
            listStr.Add("123");
            listStr.Add("456");
            listStr.Add("789");
         MessageBox.Show(listStr[2]);//”789”

Dictionary
泛型的优点(C# 编程指南)
C# 中典型的范型结构除了熟悉的 IList , HashTable之外还有一个并不常见的Dictionary集合。
相比较而言,Dictionary的性能是最好的,也属于轻便型的集合。效率要大于HashTable,其主要原因是Dictionary支持强类型声明的。
在公共语言运行库和 C# 语言的早期版本中,通用化是通过在类型与通用基类型 Object 之间进行强制转换来实现的,泛型提供了针对这种限制的解决方案。通过创建泛型类,您可以创建一个在编译时类型安全的集合。
添加到 ArrayList 中的任何引用或值类型都将隐式地向上强制转换为 Object。如果项是值类型,则必须在将其添加到列表中时进行装箱操作,在检索时进行取消装箱操作。强制转换以及装箱和取消装箱操作都会降低性能;在必须对大型集合进行循环访问的情况下,装箱和取消装箱的影响非常明显。
对于客户端代码,与 ArrayList 相比,使用 List<T> 时添加的唯一语法是声明和实例化中的类型参数。虽然这稍微增加了些编码的复杂性,但好处是您可以创建一个比 ArrayList 更安全并且速度更快的列表,特别适用于列表项是值类型的情况。
Dictionary 泛型类提供了从一组键到一组值的映射。字典中的每个添加项都由一个值及其相关联的键组成。通过键来检索值的速度是非常快的,接近于 O(1),这是因为 Dictionary 类是作为一个哈希表来实现的。
1、
Dictionary<int, string> fruit = new Dictionary<int, string>();
         //加入重复键会引发异常
         fruit.Add(1, "苹果");
         fruit.Add(2, "桔子");
         fruit.Add(3, "香蕉");
         fruit.Add(4, "菠萝");

         //因为引入了泛型,所以键取出后不需要进行Object到int的转换,值的集合也一样
         foreach (int i in fruit.Keys)
           {
               MessageBox.Show("键是:"+i.ToString()+ "值是:"+ fruit);
    }
2、
Dictionary<string , string> fruit = new Dictionary<string, string>();

            //加入重复键会引发异常
            fruit.Add("1", "苹果");
            fruit.Add("2", "桔子");
            fruit.Add("3", "香蕉");
            fruit.Add("4", "菠萝");

            //因为引入了泛型,所以键取出后不需要进行Object到int的转换,值的集合也一样
            foreach (string i in fruit.Keys)
            {
                MessageBox.Show("键是:"+i.ToString()+ "值是:"+ fruit);
            }

转载于:https://www.cnblogs.com/silverLee/archive/2009/11/05/1596778.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298762.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习会不会被取代?深度学习必看发展史

近年来&#xff0c;随着人工智能时代的来临&#xff0c;数据科学、计算机科学迎来飞速发展&#xff0c;多次引发讨论的人机对战也正是人工智能与人类的对决。从无人驾驶汽车到AlphaGo战胜人类&#xff0c;机器学习成为了当下最热门的技术。而机器学习中一种重要的方法就是深度学…

Xcode6中如何对scrollview进行自动布局(autolayout)

本文转载至 http://www.cocoachina.com/ios/20141011/9871.html XCodeAutolayoutscrollView Xcode6中极大的增强了IB中自动布局的能力&#xff0c;下面就通过对刺儿头scrollview进行一次自动布局实战&#xff0c;看看自动布局在Xcode6中到底值不值得使用。 说 UIScrollView是个…

linux文件读保护,Linux Rootkit实现文件保护

一个非常基础的rootkit&#xff0c;禁止读取指定文件编译系统:CentOS 7uname -r3.10.0-957.21.3-el7.x86_64#include #include #include asmlinkage long(*real_open)(const char __user *filename, int flags, unsigned short mode);unsigned long **syscall_table NULL;char…

react: useEffect

可以吧useEffect看作是componentDidMount componentDidUpdate componentWillUnmount 三个函数的组合 在https://ant.design/components/button-cn 打开一个codesanbox&#xff0c; 替换下面代码 import React, { useEffect, useState } from "react"; import ReactD…

python的网页解析器_python 之网页解析器

一、什么是网页解析器 1、网页解析器名词解释 首先让我们来了解下&#xff0c;什么是网页解析器&#xff0c;简单的说就是用来解析html网页的工具&#xff0c;准确的说&#xff1a;它是一个HTML网页信息提取工具&#xff0c;就是从html网页中解析提取出“我们需要的有价值的数据…

JWT:我应该使用哪种签名算法?

JWT&#xff1a;我应该使用哪种签名算法&#xff1f;JSON Web Token (JWT) 可以使用许多不同的算法进行签名&#xff1a;RS256、PS512、ES384、HS1&#xff1b;当被问及他们想使用哪一个时&#xff0c;您就会明白为什么有些开发人员会挠头。根据我的经验&#xff0c;许多主流身…

写一个聊天辅助程序

Codeprocedure TForm1.Button1Click(Sender: TObject);varhParent,hButton,hMemo: HWND;beginMemo1.SelectAll;//Memo内容全选Memo1.CopyToClipboard;//把Memo中选中的语句拷贝到剪贴板中try//找发送消息的QQ窗口hParent : FindWindow(nil, 发送消息);//然后找回话时用的编辑窗…

真是个狠人!开学第一天,这批小学生的造型刷爆朋友圈!

全世界只有3.14 % 的人关注了爆炸吧知识在史上最长的长假过后杭州一二三年级小学生回到学校忘记座位在哪里、老师姓什么各种有趣故事不断……而在养正小学门口&#xff0c;从入校门开始&#xff0c;大家笑声就不断&#xff0c;别样的开学礼一下刷屏了朋友圈&#xff1a;每个小朋…

Linux系统断电后起不来,centos/linux 断电后,开机光标闪现不能开启,重新引导

一台工作站在某次断电以后不能正常重启了。主板的文字结束后&#xff0c;就只剩下光标在闪。开机&#xff0c;观察还能进行bios设置&#xff0c;主板没有问题。用u盘能启动操作系统&#xff0c;可以查看硬盘。所以硬件没有问题。猜想是引导出问题了。阅读了以下文章&#xff1a…

SCM基础之过程描述

软件开发一般分为&#xff1a;计划阶段、开发阶段和维护阶段 计划阶段&#xff1a;总体研发计划 -> 配置管理计划&#xff1a; CCB确定开发计划中的里程碑和开发策略CMO&#xff08;配置管理员&#xff09;根据CCB规划&#xff0c;制定配置管理计划&#xff0c;交由CCB审核C…

开通博客,记录生活

2013年大学毕业后&#xff0c;我会到了家乡&#xff0c;在一家大的印刷厂找了一份工作。工作职责就是网管兼软件开发&#xff0c;拿2千多块的工资。后来有一次我打印文件时&#xff0c;发现了一份工资列表。估计是人力资源打错打印机了。我大概一看&#xff0c;原来最高层总经理…

C++中如何读取一个数的位数_C语言编写程序求水仙花数

C语言编写程序求水仙花数水仙花数是一个数学问题&#xff0c;其实质是一个三位数&#xff0c;个位数的立方加十位数的立方加百位数的立方之和等于这个三位数本身。例如153&#xff1d;1*1*15*5*53*3*3&#xff0c;即153&#xff1d;112527。这是一个相对较为简单的C程序&#x…

RabbitMQ简介和六种工作模式详解

一、RabbitMQ简介是一个开源的消息代理和队列服务器&#xff0c;用来通过普通协议在完全不同的应用之间共享数据&#xff0c;RabbitMQ是使用Erlang(高并发语言)语言来编写的&#xff0c;并且RabbitMQ是基于AMQP协议的。1.1 AMQP协议Advanced Message Queuing Protocol(高级消息…

为什么男性比女性死得更早,心疼一秒钟!

最近娱乐圈的那些大瓜大家都吃了吗&#xff1f;某明星的运动&#xff1f;黑眼圈&#xff1f;&#xff1f;不免让小编想起之前看的文章 男性为啥比女性“去”的早嗯&#xff0c;有可能是操劳过度 生活太累 咳咳咳咳咳以上均是不负责任猜想吃瓜要谨慎呦????不过这篇报道…

奥巴马访华:不建议过度审查 提倡加强互联网开放

新华网上海11月16日电 美国总统奥巴马16日在上海与中国青年对话。在回答互联网开放的问题时&#xff0c;奥巴马表示信息越是能够自由的流通&#xff0c;社会就变得越强&#xff0c;因为这样子&#xff0c;世界各地的公民能让自己的政府负责。 [奥巴马]好吧&#xff0c;我现在请…

linux脚本开机挂载,案例七:shell实现开机自动挂载本地YUM仓库程序

实现开机自动挂载本地YUM仓库自动化程序&#xff0c;可以在没有网络的情况下也可以使用yum安装程序。#!/bin/bash#自动搭建yum本地仓库#cdrom () {mount /dev/cdrom /media/cdrom &> /dev/null[ $? -eq 0 ] && echo "挂载成功"}[ -d /media/cdrom ] …

理中汤治疗口疮

理中汤治疗口疮 □ 高建忠 山西中医学院附属医院  口舌生疮疼痛&#xff0c;老百姓常说“上火了”&#xff0c;医者也常从实火或虚火论治&#xff0c;多用凉药。   《丹溪心法口齿》&#xff1a;“口疮服凉药不愈者&#xff0c;因中焦土虚&#xff0c;且不能食&#xff0c;…

(转)C#网络编程(基本概念和操作) - Part.1

源码下载&#xff1a;http://www.tracefact.net/SourceCode/Network-Part1-2.rar C#网络编程(基本概念和操作) - Part.1 引言 C#网络编程系列文章计划简单地讲述网络编程方面的基础知识&#xff0c;由于本人在这方面功力有限&#xff0c;所以只能提供一些初步的入门知识&#x…

jwt如何防止token被窃取_在吗?认识一下JWT(JSON Web Token)?

什么是JSON Web Token &#xff1f;官网介绍&#xff1a;JSON Web Token(JWT)是一个开放标准(RFC 7519)&#xff0c;它定义了一种紧凑且自包含的方式&#xff0c;用于在各方之间安全地将信息作为JSON对象传输。由于此信息是经过数字签名的&#xff0c;因此可以被验证和信任。可…

8月日更,我的困难与感悟

8月份参加了掘金的日更活动&#xff0c;坚持每天写技术文章进行分享&#xff0c;现在活动结束了&#xff0c;来复盘下这一个月来我的困难与感悟。8月日更其实刚开始我是不想参加这个活动的&#xff0c;最近确实比较忙&#xff0c;不管是工作还是自己的私事&#xff0c;都不允许…