C# Hashtable
哈希表(Hashtable)
在.NET Framework中,Hashtable 是 System.Collections 命名空间提供的一个容器,用于处理和表现类似 key-value 的键值对,其中 key 通常可用来快速查找,同时 key 是区分大小写;value 用于存储对应于 key 的值。
Hashtable 中 key-value 键值对均为 object 类型,所以 Hashtable 可以支持任何类型的 key-value 键值对。
创建Hashtable实例
Hashtable ht = new Hashtable();
Add 添加key-value键值对
ht.Add("A", "");
ht.Add("B", "");
ht.Add("C", "");
ht.Add("D", "");
遍历
// 遍历哈希表只能用foreach来遍历,因为Hashtable不能用索引访问
// 遍历key
foreach (Object item in ht.Keys)
{
Console.WriteLine((string)item);
}
// 遍历value
foreach (Object item in ht.Values)
{
Console.WriteLine((string)item);
}
//遍历
foreach (DictionaryEntry de in ht)
{
Console.WriteLine("Key : {0} ; Value : {1}.", de.Key, de.Value);
}
// 遍历哈希表(结果与上面相同)
IDictionaryEnumerator myEnumerator = ht.GetEnumerator();
while (myEnumerator.MoveNext())
{
Console.WriteLine("Key : {0} ; Value : {1}.", myEnumerator.Key, ht[myEnumerator.Key]);
}
哈希表排序
ArrayList list = new ArrayList(ht.Keys);
list.Sort();
foreach (string key in list)
{
Console.WriteLine("Key : {0} ; Value : {1}.", key, ht[key]);
}
赋值
ht["A"] = "你好";
Contains 判断哈希表是否包含特定键
//返回值为 true 或 false
if (ht.Contains("A"))
{
Console.WriteLine("Key : {0} ; Value : {1}.", "A", ht["A"]);
}
Remove 移除一个key-value键值对
ht.Remove("C");
Clear 移除所有元素
ht.Clear();
Clone 复制
Hashtable ht2 = ht.Clone() as Hashtable;
ht2["A"] = "世界";
ht["B"] = "晚安";
ht.Add("E", "");
可以看到,Clone 以后,两个 Hashtable 是互不影响的。
CopyTo 将HashTable中键或值列表复制到数组中
String[] myTargetArray = new String[];
myTargetArray[] = "The";
myTargetArray[] = "quick";
myTargetArray[] = "brown";
myTargetArray[] = "fox";
myTargetArray[] = "jumped";
myTargetArray[] = "over";
myTargetArray[] = "the";
myTargetArray[] = "lazy";
myTargetArray[] = "dog";
ht.Keys.CopyTo(myTargetArray, ); //赋值键到数组中,从第7位起覆盖。
ht.Values.CopyTo(myTargetArray, );//赋值值到数组中,从第7位起覆盖。
未执行 ht.Keys.CopyTo(myTargetArray, 6) 前
执行 ht.Keys.CopyTo(myTargetArray, 6) 后
执行 ht.Values.CopyTo(myTargetArray, 10) 后
完整代码
using System;
using System.Collections;//使用Hashtable时,必须引入这个命名空间 namespace ConsoleTest
{
class HashtableTest
{
public static void HashtableTestMain()
{
// 创建一个Hashtable实例
Hashtable ht = new Hashtable(); // 添加key-value键值对
ht.Add("A", "");
ht.Add("B", "");
ht.Add("C", "");
ht.Add("D", ""); // 遍历哈希表只能用foreach来遍历,因为Hashtable不能用索引访问
// 遍历key
foreach (Object item in ht.Keys)
{
Console.WriteLine("Key : {0} ;", (string)item);
}
// 遍历value
foreach (Object item in ht.Values)
{
Console.WriteLine("Value : {0} ;", (string)item);
}
//遍历
foreach (DictionaryEntry de in ht)
{
Console.WriteLine("Key : {0} ; Value : {1}.", de.Key, de.Value);
} // 哈希表排序
ArrayList list = new ArrayList(ht.Keys);
list.Sort();
foreach (string key in list)
{
Console.WriteLine("Key : {0} ; Value : {1}.", key, ht[key]);
} // 赋值
ht["A"] = "你好"; // 判断哈希表是否包含特定键,其返回值为true或false
if (ht.Contains("A"))
{
Console.WriteLine("Key : {0} ; Value : {1}.", "A", ht["A"]);
} // 移除一个key-value键值对
ht.Remove("C"); // 遍历哈希表
IDictionaryEnumerator myEnumerator = ht.GetEnumerator();
while (myEnumerator.MoveNext())
{
Console.WriteLine("Key : {0} ; Value : {1}.", myEnumerator.Key, ht[myEnumerator.Key]);
} // 复制
Hashtable ht2 = ht.Clone() as Hashtable;
ht2["A"] = "世界";
ht["B"] = "晚安";
ht.Add("E", ""); // 将HashTable中键或值列表复制到数组的方法
String[] myTargetArray = new String[];
myTargetArray[] = "The";
myTargetArray[] = "quick";
myTargetArray[] = "brown";
myTargetArray[] = "fox";
myTargetArray[] = "jumped";
myTargetArray[] = "over";
myTargetArray[] = "the";
myTargetArray[] = "lazy";
myTargetArray[] = "dog";
ht.Keys.CopyTo(myTargetArray, ); //赋值键到数组中,从第7位起覆盖。
ht.Values.CopyTo(myTargetArray, );//赋值值到数组中,从第7位起覆盖。 // 移除所有元素
ht.Clear();
Console.ReadKey();
}
}
}
Hashtable完整代码
C# Hashtable的更多相关文章
- HashSet HashTable 与 TreeSet
HashSet<T>类 HashSet<T>类主要是设计用来做高性能集运算的,例如对两个集合求交集.并集.差集等.集合中包含一组不重复出现且无特性顺序的元素. HashSet& ...
- Javascript实现HashTable类
散列算法可以尽快在数据结构中找出指定的一个值,因为可以通过Hash算法求出值的所在位置,存储和插入的时候都按照Hash算法放到指定位置. <script> function HashTab ...
- Java集合专题总结(1):HashMap 和 HashTable 源码学习和面试总结
2017年的秋招彻底结束了,感觉Java上面的最常见的集合相关的问题就是hash--系列和一些常用并发集合和队列,堆等结合算法一起考察,不完全统计,本人经历:先后百度.唯品会.58同城.新浪微博.趣分 ...
- java面试题——HashMap和Hashtable 的区别
一.HashMap 和Hashtable 的区别 我们先看2个类的定义 public class Hashtable extends Dictionary implements Map, Clonea ...
- Map集合及与Collection的区别、HashMap和HashTable的区别、Collections、
特点:将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值. Map集合和Collection集合的区别 Map集合:成对出现 (情侣) ...
- HashTable初次体验
用惯了数组.ArryList,初次接触到HashTable.Dictionary这种字典储存对于我来说简直就是高大上. 1.到底什么是HashTable HashTable就是哈希表,和数组一样,是一 ...
- HashMap和 Hashtable的比较
Hashtable 和 HashMap的比较 1. HashMap可以接受null(HashMap可以接受为null的键值(key)和值(value), HashTable不可以接受为null的键( ...
- hashMap和hashTable的区别
每日总结,每天进步一点点 hashMap和hashTable的区别 1.父类:hashMap=>AbstractMap hashTable=>Dictionary 2.性能:hashMap ...
- SortedList和HashTable
都是集合类,C#中同属命名空间System.Collections,“用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写:value用于存储对应于key的 ...
- Java Hashtable的实现
先附源码: package java.util; import java.io.*; /** * This class implements a hash table, which maps keys ...
随机推荐
- caffe出错:Unknown bottom blob 'data' (layer 'conv1', bottom index 0)
原文https://blog.csdn.net/u011070171/article/details/75425740 caffe训练出现如下错误: Unknown bottom blob 'data ...
- Mac下的命令行自动补全功能
/usr/local/etc/bash_completion.d
- 奇怪吸引子---NoseHoover
奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...
- Android关于log日志,华为不输出log.v,log.d(zz)
[java] view plain copy 我用的是mate8,本来虚拟机测试一点日志一点问题没有 [java] view plain copy 但是真机测试发现log.d一直不输出,正好又试了lo ...
- MongoDB学习笔记(一)安装配置
文档存储:文档存储一般用类似json的格式存储,存储的内容是文档型的. MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成.MongoDB 文档类似于 JSON ...
- 【PMP】项目采购管理~重点知识
1.合同的类型与区别 固定总价(FFP):大多数买方都喜欢这种合同,因为货物的采购价格在一开始就已确定,并且不允许改变(除非工作范围发生变更) 总价加激励费用(FPIF):这种总价合同给买方和卖方提供 ...
- JavaScript绑定this
问题描述 var a = { one: 1, haha() { console.log(this.one) } } setTimeout(a.haha, 1000) 在上例中,函数haha引用了thi ...
- 基础006_pg109_IP-Xfft
作者:桂. 时间:2018-05-09 07:20:48 链接:http://www.cnblogs.com/xingshansi/p/9012232.html 前言 简要记录xilinx FFT的 ...
- [k8s]coredns/kube-dns配置subdomain
思想: kube-dns或coredns本质上是一个dns服务软件.都需要配置配置文件.要控制怎么查询,即控制他的配置文件即可. 本文先说下coredns怎么配置,然后在配下kube-dns(包含了外 ...
- kali2016.1 基本配置
更新源 修改 /etc/apt/sources.list #kali官方源 deb http://http.kali.org/kali kali-rolling main non-free cont ...