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

Hashtable, ArrayList, List, Dictionary学习相关推荐

  1. 以ArrayList为例学习序列化和反序列化

    一.序列化和反序列化: 在进行对象操作类的实现时,涉及到好几个关键词Serializable和transient 什么是序列化和反序列化? 序列化:将对象转化为字节的过程称为序列化过程 (存储到本地磁 ...

  2. 接口,常用接口,列表ArrayList,泛型,Dictionary(字典),Dictionary版-火星文翻译器,其他集合类...

    接口 接口相当于没有方法实现的抽象类. public interface Flyable { void Flay(); } 接口方法不要public.(为什么不能用private,public,因为如 ...

  3. OAF_开发系列17_实现OAF数组应用Vector / Hashmap / Hashtable / Arraylist(案例)

    20150506 Created By BaoXinjian 一.摘要 Vector.ArrayList和Hashtable Jashmap的异同 线性表,链表,哈希表是常用的数据结构,在进行Java ...

  4. Javascript模拟c#中arraylist操作(学习分享)

    最近在看javascript,在<javascript高级编程>中也学到了不少东西.但是在这里要感谢博客园的"汤姆大叔" 的无私奉献,他的关于javascript相关博 ...

  5. 集合框架-ArrayList源码学习

    MIT麻省理工学院讲义上的一段话: 如果没有完全理解 JAVA 库中的具有决定性的部分,你就不可能成为一个优秀的 JAVA 程序员.基本类型都包含在 java.lang 中.java.util包提供了 ...

  6. 基于API的ArrayList集合之学习记录

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.arraylist集合的出现 对象数组的使用 对象数组的缺点 为了弥补对象数组的缺点,出现了arraylist集合 二. ...

  7. ArrayList源码学习

    可增长数组结构 实现: 1. 内部采用数组的方式. 1.1 添加元素,会每次校验容量是否满足, 扩容规则是当前数组长度+当前数组长度的二分之一.容量上限是Integer.MAX_VALUE. copy ...

  8. ArrayList源码学习第二天全解

    目录 1,删除元素 1.1,删除单个元素remove 1.2, 移除多个元素removeRange 1.3,移除在 c 中的元素batchRemove 4,移除不在 c 中的元素retainAll 2 ...

  9. Java(ArrayList和LinkedList)、(HashTable与HashMap)、(HashMap、Hashtable、LinkedHashMap和TreeMap比较)

    1.ArrayList和LinkedList (1)ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构.  (2)对于随机访问get和set,ArrayList绝 ...

最新文章

  1. 收集一些好的技术文档
  2. 不可错过的javascript迷你库
  3. Qt C++属性类型提供给 QML调用(四)
  4. paypal创建订单后怎么获得id_PayPal开放加密数字货币买卖 2021年将支持2600万家商户购物...
  5. 毕业十年,你的收入是怎样的?
  6. try except 异常捕获的方法、断言的使用
  7. 【leetcode】538. Convert BST to Greater Tree
  8. Vue项目中使用eslint的笔录,编辑器采用sublime3
  9. 新疆财大计算机科学,新疆财经大学计算机科学与工程学院学生参加了多项专业赛事...
  10. java hd sex_Java学习笔记(十八)——Java DTO
  11. Android音视频开发之如何合并音频和视频文件?
  12. mac虚拟机parallels装Ubuntu无法联网
  13. ActiveX是什么?界面开发有哪些好用的ActiveX控件推荐?
  14. Python从入门到PY交易,基础语法,散记(一)
  15. vue 前端仿QQ截图实现Web端自定义截屏(JS版)
  16. 解决 git 文件夹不显示绿色图标和红色图标的问题
  17. oracle逗号隔开行转列_oralce逗号分割变多行-Oracle
  18. 关于TPC协议知识汇总
  19. javaScript解决浏览器兼容问题,判断浏览器是ie或者Chrome
  20. 凯撒密码C语言用ASCII码,凯撒密码帮助ASCII循环

热门文章

  1. 李彦宏最新演讲:移动互联网的时代已经结束了
  2. 第十三章:Python の 网络编程进阶(二)
  3. 第十天-linux命令及基础手把手实战
  4. Central Europe Regional Contest 2012 Problem c: Chemist’s vows
  5. [Swift]LeetCode811. 子域名访问计数 | Subdomain Visit Count
  6. 不同数据库间的数据访问--dblink
  7. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--L-用来作弊的药水
  8. python入门(1)python的前景
  9. 五、线程管理————GCD
  10. Android编译系统入门(二)