- 浏览: 55970 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
lmhziyou:
我就是想问一下 如果把hibernate集成到spring里面 ...
MyEclipse--Hibernate连接ACCESS数据库
1、HashTable定义
System.Collections. Hashtable类表示键/值对的集合,这些键/值对根据键的哈希代码进行组织, 每个元素都是一个存储在 DictionaryEntry 对象中的键/值对。键不能为 null,但值可以。
2.优点
1、通过Key快速查找。
2、Hashtable 是线程安全的。
3. Hashtable的构造器
构造器函数 |
注释 |
Public Hashtable () |
使用默认的初始容量(容量大小为0)、加载因子、哈希代码提供程序和比较器来初始化 Hashtable 类的新的空实例。 |
public Hashtable (IDictionary) |
通过将指定字典中的元素复制到新的 Hashtable 对象中,初始化 Hashtable 类的一个新实例。新Hashtable 对象的初始容量等于复制的元素数,并且使用默认的加载因子、哈希代码提供程序和比较器。 |
public Hashtable (Int32) |
使用指定的初始容量、默认加载因子、默认哈希代码提供程序和默认比较器来初始化 Hashtable 类的新的空实例。 |
4、Hashtable的属性
属性名 |
注释 |
获取包含在 Hashtable 中的键/值对的数目。 |
|
获取一个值,该值指示 Hashtable 是否具有固定大小。 |
|
获取一个值,该值指示 Hashtable 是否为只读。 |
|
获取包含 Hashtable 中的键的 ICollection。 |
|
获取包含 Hashtable 中的值的 ICollection。 |
5. Hashtable的方法
方法名 |
注释 |
Void Add(object key,object value) |
将带有指定键和值的元素添加到 Hashtable 中。 |
Void Clear() |
从 Hashtable 中移除所有元素。 |
Bool Contains(object key) |
确定 Hashtable 是否包含特定键。 |
Bool ContainsKey(object key) |
确定 Hashtable 是否包含特定键。 |
Bool ContainsValue(object value) |
确定 Hashtable 是否包含特定值。 |
Void Remove(object key) |
从 Hashtable 中移除带有指定键的元素。 |
Void InsertRange(int index,Icollection collec) |
用于从指定位置开始添加一批元素,列表后面的元素依次往后移动 |
Clone() |
创建 Hashtable 的浅表副本。 |
实现 ISerializable 接口,并返回序列化 Hashtable 所需的数据。 |
6、Hashtable的使用示例
public class Program
{
public static void Main(string[] args)
{
//创建一个HashTable
Hashtable openWith = new Hashtable();
//为HashTable添加元素,不能有重复的key,但可以有重复的值
openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("dib", "paint.exe");
openWith.Add("rtf", "wordpad.exe");
//添加重复的key,会抛出异常
try
{
openWith.Add("txt", "winword.exe");
}
catch
{
Console.WriteLine("An element with Key = \"txt\" already exists.");
}
//通过key获得值
Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);
//重新赋值
openWith["rtf"] = "winword.exe";
Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);
//以赋值的方式,创建一个新元素
openWith["doc"] = "winword.exe";
//如果HashTable中不包含该元素,将抛出异常(经测试这里不抛出异常)
//原因(如果未找到指定的键,尝试获取它将返回 空引用(在 Visual Basic 中为 Nothing),尝试设置它将使用指定的键创建新元素。 )
try
{
Console.WriteLine("For key = \"tif\", value = {0}.", openWith["tif"]);
}
catch
{
Console.WriteLine("Key = \"tif\" is not found.");
}
//判断是否包含特定的key
if (!openWith.ContainsKey("ht"))
{
openWith.Add("ht", "hypertrm.exe");
Console.WriteLine("Value added for key = \"ht\": {0}", openWith["ht"]);
}
//遍历HashTable
Console.WriteLine();
foreach (DictionaryEntry de in openWith)
{
Console.WriteLine("Key = {0}, Value = {1}", de.Key, de.Value);
}
// 获取HashTable中值的集合
ICollection valueColl = openWith.Values;
Console.WriteLine();
foreach (string s in valueColl)
{
Console.WriteLine("Value = {0}", s);
}
// 获取HashTable中键的集合
ICollection keyColl = openWith.Keys;
Console.WriteLine();
foreach (string s in keyColl)
{
Console.WriteLine("Key = {0}", s);
}
Console.WriteLine("\nRemove(\"doc\")");
//移除指定的元素
openWith.Remove("doc");
if (!openWith.ContainsKey("doc"))
{
Console.WriteLine("Key \"doc\" is not found.");
}
Hashtable mySourceHT = new Hashtable();
mySourceHT.Add("A", "valueA");
mySourceHT.Add("B", "valueB");
// 创建一个字符串数组
String[] myTargetArray = new String[15];
myTargetArray[0] = "The";
myTargetArray[1] = "quick";
myTargetArray[2] = "brown";
myTargetArray[3] = "fox";
myTargetArray[4] = "jumped";
myTargetArray[5] = "over";
myTargetArray[6] = "the";
myTargetArray[7] = "lazy";
myTargetArray[8] = "dog";
// 遍历数组的值
Console.WriteLine("The target Array contains the following before:");
PrintValues(myTargetArray, ' ');
//将hashtable中的key复制到数组中
Console.WriteLine("After copying the keys, starting at index 6:");
mySourceHT.Keys.CopyTo(myTargetArray, 6);
PrintValues(myTargetArray, ' ');
//将hashtable中的Value复制到数组中
Console.WriteLine("After copying the values, starting at index 6:");
mySourceHT.Values.CopyTo(myTargetArray, 6);
PrintValues(myTargetArray, ' ');
Console.Read();
}
//遍历数据方法
public static void PrintValues(String[] myArr, char mySeparator)
{
for (int i = 0; i < myArr.Length; i++)
Console.Write("{0}{1}", mySeparator, myArr[i]);
Console.WriteLine();
}
}
7、Hashtable遍历方法
方法一
foreach (System.Collections.DictionaryEntry objDE in objHasTab)
{
Console.WriteLine(objDE.Key.ToString());
Console.WriteLine(objDE.Value.ToString());
}
方法二
System.Collections.IDictionaryEnumerator enumerator = objHashTablet.GetEnumerator();
while (enumerator.MoveNext())
{
Console.WriteLine(enumerator.Key); // Hashtable关健字
Console.WriteLine
}
8、Hashtable排序
//把ht的键对象全部复制到ArrayList中
ArrayList al = new ArrayList(ht.Keys);
/*ht.Keys返回ht中所有键对象构成的集合,把该集合传递给ArrayList构造方法则得到一个包
*所有键对象的动态数组
*/
al.Sort();//从小到大排列
//排序完成输出
for (int i = 0; i < al.Count;i++ )
{
object e=al[i];
object temp = (object)ht[e];//键作为索引器来获得对应的值对象
Console.WriteLine(temp.tostring());
}
发表评论
-
对文件和字符串压缩及解压缩类
2014-03-20 09:28 1409/// <summary> ... -
C#线程池
2012-06-11 14:00 1158许多应用程序使用多个线程,但这些线程经常在休眠状态中耗费 ... -
C#集合之ARRAYLIST
2012-06-11 14:01 11611、ArrayList定义 System.Collec ... -
C#集合之SORTEDLIST
2012-05-25 09:44 01、SortedList定义 System.Colle ... -
C#集合之SORTEDLIST
2012-05-25 09:40 17501、SortedList定义 System.Colle ... -
C#泛型类之LIST<T>
2012-05-25 09:39 22411、 定义 System.Collect ... -
C#之泛型
2012-05-25 09:37 9171、泛型概述 泛型可 ... -
C#集合之QUEUE
2012-05-25 09:30 10331、Queue定义 System.Collection ... -
C#集合之STACK
2012-05-25 09:29 11091、Stack定义 System.Collect ...
相关推荐
与此相关的,`Hashtable`是.NET框架中的一个古老的集合类,用于存储键值对,它在早期的.NET应用中十分常见。然而,随着.NET Framework的发展,`Dictionary, TValue>`逐渐取代了`Hashtable`,因为后者不支持泛型,且...
Hashtable是C#编程语言中的一种内置数据结构,属于.NET Framework的System.Collections命名空间。它是一个基于散列的键值对集合,允许程序员快速查找、添加和删除元素。在本篇文档中,我们将深入探讨如何在C#中有效...
在C#编程中,`HashTable`是一个非泛型集合类,它在.NET Framework早期版本中被广泛使用。然而,随着.NET Framework的不断发展,`HashTable`逐渐被更安全、类型安全且性能更高的`Dictionary, TValue>`所取代。尽管...
在C# .NET编程环境中,`HashTable`类是一个非同步、无序的键值对集合,它提供了快速的数据存储和检索功能。`HashTable`类是基于哈希表数据结构实现的,这使得它能够通过键(key)来快速查找值(value)。在本文中,...
学习C#集合时,开发者需要熟悉这些泛型集合的接口、属性和方法,以便在实际开发中选择合适的集合类型来满足特定需求。例如,如果需要快速查找元素,哈希集和字典可能更适合;如果需要保持元素的顺序,列表和双向链接...
在C#编程中,`Hashtable`是一个非常重要的数据结构,它是.NET框架中提供的一种基于哈希表的键值对集合。本篇文章将深入探讨`Hashtable`在创建通讯录场景中的应用,以及它所涉及的相关知识点。 `Hashtable`是C#中的...
Hashtable练习及参考答案
在C#编程中,集合是数据存储和管理的基础,它们提供了灵活的方式来进行数据操作。本篇文章将重点关注四个常见的集合类型:ArrayList、List、Hashtable和DataSet,并对它们的索引性能进行测试和对比。 首先,...
### C#集合容器(collection)详解 #### 一、集合的概念与分类 集合是C#语言中用于存储一组数据的一种机制,它可以是不同类型的对象。在.NET框架中,集合通过实现`System.Collections.ICollection`、`System....
日常工作中我们用到各种集合,但对于他们的性能比较则不是太清楚,因为片处的数据量不大,所以性能优势无法体现,本测试程序可以直观的测试各种集合的性能ArrayList 、List 、Dictionary、Hashtable
在C#编程中,`Hashtable` 是一种常用的集合类,它允许我们存储键值对数据。在某些场景下,我们可能需要将 `Hashtable` 中的值转换为数组,以便进行进一步的操作或处理。这里我们将详细讲解如何使用 `CopyTo` 方法来...
在C#编程语言中,数组和集合对象是两种常见的数据结构,它们用于存储和管理一组相关的数据。本篇文章将重点讨论`Hashtable`类的使用,它是一个非同步的、键值对存储的集合,适用于存储不重复的键,并且允许快速访问...
这些集合在设计之初并未考虑到类型安全性的问题,因此它们只能存储 `object` 类型的对象,这导致了以下问题: 1. **性能问题**:由于非泛型集合存储的是 `object` 类型,这意味着当向集合中添加基本类型(如 `int`...
本文将深入探讨C#集合的学习心得,并基于给出的部分内容进行详细阐述。 首先,数组作为基本的数据结构,有其固有的限制。数组大小在创建时即被固定,若需调整大小,必须借助`System.Array.Resize`方法,但这种方法...
在C#编程语言中,集合是用于存储一组对象的数据结构。它们提供了方便的方式来组织和操作数据。本篇文章将深入探讨三种常见的集合类型:Array、ArrayList、Hashtable以及泛型的List,并提供相关的示例代码来帮助理解...
总的来说,"C#用Hashtable做的学生管理系统"是一个很好的学习项目,它涵盖了C#的基础知识,包括面向对象编程、集合的使用、用户界面设计和事件处理。对于初学者,这是一个理解和实践C#编程的好机会。不过,为了提升...
C#数据结构之Array、ArrayList、Hashtable、Dictionary C#中有多种数据结构可以用来存储和管理数据,今天我们将讨论四种常用的数据结构:Array、ArrayList、Hashtable和Dictionary。这些数据结构都是_Collections_...
C# 是一种面向对象的编程语言,其标准库提供了丰富的集合类来帮助开发者管理数据。在C#中,集合类是用于存储一组对象的数据结构,它们提供了多种操作这些对象的方法。下面将详细介绍C#中的一些主要集合类以及它们的...
C#集合是编程中不可或缺的一部分,它提供了存储和管理数据的有效方式。在这篇学习笔记中,我们将探讨几个关键的集合类,包括System.Array、ArrayList、Hashtable以及SortedList,以及它们的特点和常用方法。 首先,...
本篇文章将深入探讨`Dictionary`和`Hashtable`的区别以及在C#开发中的应用。 首先,`Dictionary, TValue>`是C#标准库中的一个泛型类,自.NET Framework 2.0起引入。它的主要优点在于类型安全性,因为键和值都是强...