热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

037字典集合类之Hashtable

目录Hashtable类属性方法构造函数示例:Hashtable类https:docs.microsoft.comzh-cndotnetapisystem

目录

Hashtable 类

属性

方法

构造函数

示例:




Hashtable 类

https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.hashtable?view=netcore-3.1

    Hashtable类是一种键值对的集合,在内部,Hashtable类维护着一个哈希表。内部哈希表为插入到Hashtable的每个键进行哈希编码,在后续的检索操作中,通过哈希编码可以遍历所有元素。这种方法为搜寻操作提供了较佳的性能。
    在.NET中,Hashtable类中存储的每个元素都是一个存储在DictionaryEntry对象中的键/值对。键不能为空引用Nothing,但值可以。键和值可以是任何对象,例如字符串,自定义类等。当插入键/值对到哈希表中时,Hashtable使用每个键所引用对象的GetHashCode()方法,获取一个哈希编码,存人Hashtable中。


属性


comparer

获取或设置要用于 IComparer 的 Hashtable。

Count

获取包含在 Hashtable 中的键/值对的数目。

EqualityComparer

获取要用于 IEqualityComparer 的 Hashtable。

hcp

获取或设置可分配哈希代码的对象。

IsFixedSize

获取一个值,该值指示 Hashtable 是否具有固定大小。

IsReadOnly

获取一个值,该值指示 Hashtable 是否为只读。

Item[Object]

获取或设置与指定的键关联的值。

Keys

获取包含 ICollection 中的键的 Hashtable。

Values

获取一个 ICollection,它包含 Hashtable 中的值。


方法


Add(Object, Object)

将带有指定键和值的元素添加到 Hashtable 中。

Clear()

从 Hashtable 中移除所有元素。

Clone()

创建 Hashtable 的浅表副本。

Contains(Object)

确定 Hashtable 是否包含特定键。

ContainsKey(Object)

确定 Hashtable 是否包含特定键。

ContainsValue(Object)

确定 Hashtable 是否包含特定值。

CopyTo(Array, Int32)

将 Hashtable 元素复制到一维 Array 实例中的指定索引位置。

Equals(Object)

确定指定的对象是否等于当前对象。

(继承自 Object)
GetType()

获取当前实例的 Type。(继承自 Object)

KeyEquals(Object, Object)

将特定 Object 与 Hashtable 中的特定键进行比较。

MemberwiseClone()

创建当前 Object 的浅表副本。(继承自 Object)

Remove(Object)

从 Hashtable 中移除包含指定键的元素。


构造函数


Hashtable()

使用默认的初始容量、加载因子、哈希代码提供程序和比较器来初始化 Hashtable 类的新的空实例。

Hashtable(IDictionary)

通过将指定字典中的元素复制到新的 Hashtable 对象中,初始化 Hashtable 类的一个新实例。 新 Hashtable 对象的初始容量等于复制的元素数,并且使用默认的加载因子、哈希代码提供程序和比较器。

Hashtable(Int32)

使用指定的初始容量、默认加载因子、默认哈希代码提供程序和默认比较器来初始化 Hashtable 类的新的空实例。

Hashtable(Int32, Single)

使用指定的初始容量、指定的加载因子、默认的哈希代码提供程序和默认比较器来初始化 Hashtable 类的新的空实例。

    将某个元素添加到Hashtable时,将根据键的哈希代码将该元素放入存储桶中。该键的后续查找将使用键的哈希代码在一个特定存储桶中搜索,这将大大减少为查找一个元素所需的键比较的次数。
    Hashtable的加载因子确定元素与存储桶的最大比率。加载因子越小,平均查找速度越快,但消耗的内存也越大。默认的加载因子为1.0,通常提供速度和大小之间的最佳平衡。


示例:

Module Module1Private Sub PrintIndexKeysAndValues(ByVal ht As Hashtable)Dim i As IntegerConsole.WriteLine(vbTab + "-INDEX-" + vbTab + "-KEY-" & vbTab & "-VALUE-")Dim de As DictionaryEntryFor Each de In htConsole.WriteLine(vbTab & "[{0}]:" & vbTab & "{1}" & vbTab & "{2}", i, de.Key, de.Value)i = i + 1NextConsole.WriteLine()End SubSub Main()Dim myHash As New HashtablemyHash.Add(0, "Zero")myHash.Add(1, "One")myHash.Add(2, "Two")myHash.Add(3, "Three")myHash.Add(4, "Four")Console.WriteLine("哈希表的内容:")PrintIndexKeysAndValues(myHash)Dim myKey As Integer = 2Console.Write("搜索键{0}", myKey)If myHash.ContainsKey(myKey) ThenConsole.WriteLine(",该键的值为{0}", myHash(myKey))ElseConsole.WriteLine(",该键不存在")End IfmyKey = 6Console.Write("搜索键{0}", myKey)If myHash.ContainsKey(myKey) ThenConsole.WriteLine(",该键的值为{0}", myHash(myKey))ElseConsole.WriteLine(",该键不存在")End IfDim myValue As String = "Three"Console.Write("搜索值{0}", myValue)If myHash.ContainsValue(myValue) ThenDim strID As String '要查找的keyDim tmp As DictionaryEntryFor Each jzd In myHashIf myValue = jzd.Value Then strID = jzd.KeyNextConsole.WriteLine(",该值的键{0}", strID)ElseConsole.WriteLine(",该值不存在")End IfConsole.Read()End SubEnd Module

 


推荐阅读
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • 如何使用 `org.opencb.opencga.core.results.VariantQueryResult.getSource()` 方法及其代码示例详解 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 本文是Java并发编程系列的开篇之作,将详细解析Java 1.5及以上版本中提供的并发工具。文章假设读者已经具备同步和易失性关键字的基本知识,重点介绍信号量机制的内部工作原理及其在实际开发中的应用。 ... [详细]
  • 本文详细解析了客户端与服务器之间的交互过程,重点介绍了Socket通信机制。IP地址由32位的4个8位二进制数组成,分为网络地址和主机地址两部分。通过使用 `ipconfig /all` 命令,用户可以查看详细的IP配置信息。此外,文章还介绍了如何使用 `ping` 命令测试网络连通性,例如 `ping 127.0.0.1` 可以检测本机网络是否正常。这些技术细节对于理解网络通信的基本原理具有重要意义。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 本文详细解析了Java类加载系统的父子委托机制。在Java程序中,.java源代码文件编译后会生成对应的.class字节码文件,这些字节码文件需要通过类加载器(ClassLoader)进行加载。ClassLoader采用双亲委派模型,确保类的加载过程既高效又安全,避免了类的重复加载和潜在的安全风险。该机制在Java虚拟机中扮演着至关重要的角色,确保了类加载的一致性和可靠性。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 如何使用 `org.apache.tomcat.websocket.server.WsServerContainer.findMapping()` 方法及其代码示例解析 ... [详细]
  • ### 优化后的摘要本文对 HDU ACM 1073 题目进行了详细解析,该题属于基础字符串处理范畴。通过分析题目要求,我们可以发现这是一道较为简单的题目。代码实现中使用了 C++ 语言,并定义了一个常量 `N` 用于字符串长度的限制。主要操作包括字符串的输入、处理和输出,具体步骤涉及字符数组的初始化和字符串的逆序操作。通过对该题目的深入探讨,读者可以更好地理解字符串处理的基本方法和技巧。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 如何使用 `org.eclipse.rdf4j.query.impl.MapBindingSet.getValue()` 方法及其代码示例详解 ... [详细]
author-avatar
手机用户2502929805
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有