Java教程
+ -

Java Hashtable 类

2019-09-09 2 0

Hashtable是原始的java.util的一部分, 是一个Dictionary具体的实现 。
然而,Java 2 重构的Hashtable实现了Map接口,因此,Hashtable现在集成到了集合框架中。它和HashMap类很相似,但是它支持同步。

像HashMap一样,Hashtable在哈希表中存储键/值对。当使用一个哈希表,要指定用作键的对象,以及要链接到该键的值。

然后,该键经过哈希处理,所得到的散列码被用作存储在该表中值的索引。

Hashtable定义了四个构造方法。第一个是默认构造方法:

Hashtable()

第二个构造函数创建指定大小的哈希表:

Hashtable(int size)

第三个构造方法创建了一个指定大小的哈希表,并且通过fillRatio指定填充比例。

填充比例必须介于0.0和1.0之间,它决定了哈希表在重新调整大小之前的充满程度:

Hashtable(int size,float fillRatio)

第四个构造方法创建了一个以M中元素为初始化元素的哈希表。

哈希表的容量被设置为M的两倍。

Hashtable(Map m)

Hashtable中除了从Map接口中定义的方法外,还定义了以下方法:

序 号 方 法描述
1 void clear( ) 将此哈希表清空,使其不包含任何键。
2 Object clone( ) 创建此哈希表的浅表副本。
3 boolean contains(Object value) 测试此映射表中是否存在与指定值关联的键。
4 boolean containsKey(Object key) 测试指定对象是否为此哈希表中的键。
5 boolean containsValue(Object value) 如果此 Hashtable 将一个或多个键映射到此值,则返回 true。
6 Enumeration elements( ) 返回此哈希表中的值的枚举。
7 Object get(Object key) 返回指定键所映射到的值,如果此映射不包含此键的映射,则返回 null. 更确切地讲,如果此映射包含满足 (key.equals(k)) 的从键 k 到值 v的映射,则此方法返回 v;否则,返回 null。
8 boolean isEmpty( ) 测试此哈希表是否没有键映射到值。
9 Enumeration keys( ) 返回此哈希表中的键的枚举。
10 Object put(Object key, Object value) 将指定 key 映射到此哈希表中的指定 value。
11 void rehash( ) 增加此哈希表的容量并在内部对其进行重组,以便更有效地容纳和访问其元素。
12 Object remove(Object key) 从哈希表中移除该键及其相应的值。
13 int size( ) 返回此哈希表中的键的数量。
14 String toString( ) 返回此 Hashtable 对象的字符串表示形式,其形式为 ASCII 字符 “, “ (逗号加空格)分隔开的、括在括号中的一组条目。

实例

下面的程序说明这个数据结构支持的几个方法:

import java.util.*;
public class HashTableDemo {
   public static void main(String args[]) {
      // Create a hash map
      Hashtable balance = new Hashtable();
      Enumeration names;
      String str;
      double bal;
      balance.put("Zara", new Double(3434.34));
      balance.put("Mahnaz", new Double(123.22));
      balance.put("Ayan", new Double(1378.00));
      balance.put("Daisy", new Double(99.22));
      balance.put("Qadir", new Double(-19.08));
      // Show all balances in hash table.
      names = balance.keys();
      while(names.hasMoreElements()) {
         str = (String) names.nextElement();
         System.out.println(str + ": " +
         balance.get(str));
      }
      System.out.println();
      // Deposit 1,000 into Zara's account
      bal = ((Double)balance.get("Zara")).doubleValue();
      balance.put("Zara", new Double(bal+1000));
      System.out.println("Zara's new balance: " +
      balance.get("Zara"));
   }
}

以上实例编译运行结果如下:

Qadir: -19.08
Zara: 3434.34
Mahnaz: 123.22
Daisy: 99.22
Ayan: 1378.0
Zara's new balance: 4434.34

0 篇笔记 写笔记

ObjectiveC break语句
Objective-C编程语言中的break语句有以下两种用法 -当在循环内遇到break语句时,循环立即终止,程序控制在循环后的下一个语句处重新开始。它可以用于在switch语句中终止一个case(在下一章中介绍)。如果使用嵌套循环(即另一个循环中的一个循环),break语句将停止执行最内层循环并......
ObjectiveC 简介
Objective-C,Objective C入门,Objective C教程,ObjectiveObjective-C是一种通用的,面向对象的编程语言,它将Smalltalk样式的消息传递添加到C编程语言中。它是苹果公司用于OSX和iOS操作系统及其API(Cocoa和Cocoa Touch)的主......
ObjectiveC 数据类型
Objective-C编程语言中,数据类型是指用于声明不同类型的变量或函数的扩展系统。 变量的类型决定了它在存储中占用的空间大小以及如何解释存储的位模式。Objective-C中的类型可分为以下几类 -编号类型描述 1基本类型它们是算术类型,由两种类型组成:(a)整数类型和(b)浮点类型。 2......
ObjectiveC do...while循环
与for循环和while循环在顶部测试循环条件不同,Objective-C编程语言中的do…while循环检查循环底部的条件。do…while循环类似于while循环,但是do…while循环保证至少执行一次。语法Objective-C编程语言中do…while循环的语法是 -do { stat......
Ruby CGI方法
以下为CGI类的方法列表:序号方法描述 1CGI::new([ level=”query”]) 创建 CGI 对象。query可以是以下值: query: 没有 HTML 生成输出 html3: HTML3.2 html4: HTML4.0 Strict html4Tr: HTM......
ObjectiveC 将数组传递给函数
如果要将一维数组作为参数传递给函数,则必须以下列三种方式之一声明函数形式参数,并且所有三种声明方法都会产生类似的结果,因为每个都告诉编译器接受一个整数指针。类似地,可以将多维数组作为形式参数传递。方式-1使用指针形式参数如下(在下一章学习指针的用法)。- (void) myFunction(int ......
ObjectiveC 变量
变量是程序可以操作的存储区域的名称。 Objective-C中的每个变量都有一个特定的类型,它决定了变量内存的大小和布局; 可存储在内存中的值的范围;以及可以应用于变量的操作集。变量的名称可以由字母,数字和下划线(_)字符组成。 它必须以字母或下划线开头,它是区分大小写的,即:大写和小写字母是不同的......
ObjectiveC 运算符
运算符是一个符号,告诉编译器执行特定的数学或逻辑操作。 Objective-C语言内置很多运算符,提供如下类型的运算符 -算术运算符关系运算符逻辑运算符按位运算符分配运算符其它运算符本教程将逐一解释算术,关系,逻辑,按位,赋值和其他运算符。1. 算术运算符下表显示了Objective-C语言支持的所......
ObjectiveC 类别
有时,可能会发现希望通过添加仅在某些情况下有用的行为来扩展现有类。 要向现有类添加此类扩展,Objective-C提供了类别和扩展。如果需要向现有类添加方法,或许为了添加功能以便在应用程序中更容易地执行某些操作,最简单的方法是使用类别。声明类别的语法使用[@interface](https://gi......
ObjectiveC 类型转换
类型转换是一种将变量从一种数据类型转换为另一种数据类型的方法。例如,如果要将long值存储到简单整数(int)中,则可以将long类型转换设置为int。使用强制转换运算符将值从一种类型转换为另一种类型,如下所示(type_name) expression在Objective-C中,通常使用CGFlo......
ObjectiveC 协议
Objective-C允许定义协议,声明预期用于特定情况的方法。 协议在符合协议的类中实现。一个简单的例子是网络URL处理类,它将具有一个协议,其中包含processCompleted委托方法等方法,当网络URL提取操作结束,就会调用类。协议的语法如下所示 -@protocol ProtocolNa......
Perl 子程序(函数)
Perl 子程序也就是用户定义的函数。Perl 子程序即执行一个特殊任务的一段分离的代码,它可以使减少重复代码且使程序易读。Perl 子程序可以出现在程序的任何地方,语法格式如下:sub subroutine{ statements;}调用子程序语法格式:subroutine( 参数列表 );在......
ObjectiveC continue语句
Objective-C编程语言中的continue语句与break语句有点类似。 但是,不是强制终止,而是继续强制执行循环的下一次迭代,跳过其间的任何代码。对于for循环,continue语句会导致条件测试并增加循环的部分来执行。 对于while和do…while循环,continue语句会导致程序......
ObjectiveC 函数
函数是一组一起执行任务的语句。 每个Objective-C程序都有一个C函数,也就是main()函数,所有最简单的程序都可以定义为函数。可将代码划分为单独的函数。如何在不同的函数之间划分代码取决于程序员,但逻辑上这个划分通常是这样,每个函数执行一个特定的任务。函数声明告诉编译器函数的名称,返回类型和......
ObjectiveC 嵌套循环
Objective-C编程语言允许在另一个循环中使用一个循环。以下部分显示了几个例子来说明这个概念。语法Objective-C语言中嵌套for循环语句的语法如下 -for ( init; condition; increment ) { for ( init; condition; increm......
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!