开课吧Java课堂:什么是HashMap类

HashMap类使用散列表实现Map接口。这允许一些基本操作如get( )和put( )的运行时间保持恒定,即便对大型集合,也是这样的。
下面的构造函数定义为:

HashMap( ) 
HashMap(Map m) 
HashMap(int capacity) 
HashMap(int capacity, float fillRatio) 

第一种形式构造一个默认的散列映射。
第二种形式用m的元素初始化散列映射。
第三种形式将散列映射的容量初始化为capacity。
第四种形式用它的参数同时初始化散列映射的容量和填充比。
容量和填充比的含义与前面介绍的HashSet中的容量和填充比相同。

HashMap实现Map并扩展AbstractMap。它本身并没有增加任何新的方法。

应该注意的是散列映射并不保证它的元素的顺序。因此,元素加入散列映射的顺序并不一定是它们被迭代函数读出的顺序。

下面的程序举例说明了HashMap。它将名字映射到账目资产平衡表。注意集合“视图”
是如何获得和被使用的。

import java.util.*; 
class HashMapDemo { 
 public static void main(String args[]) { 
 // Create a hash map 
 HashMap hm = new HashMap(); 
 // Put elements to the map 
 hm.put("John Doe", new Double(3434.34)); 
 hm.put("Tom Smith", new Double(123.22)); 
 hm.put("Jane Baker", new Double(1378.00)); 
 hm.put("Todd Hall", new Double(99.22)); 
 hm.put("Ralph Smith", new Double(-19.08)); 
 // Get a set of the entries 
 Set set = hm.entrySet(); 
 // Get an iterator 
 Iterator i = set.iterator(); 
 // Display elements 
 while(i.hasNext()) { 
 Map.Entry me = (Map.Entry)i.next(); 
 System.out.print(me.getKey() + ": "); 
 System.out.println(me.getValue()); 
 } 
 System.out.println(); 
 // Deposit 1000 into John Doe's account 
 double balance = ((Double)hm.get("John Doe")).doubleValue(); 
 hm.put("John Doe", new Double(balance + 1000)); 
 System.out.println("John Doe's new balance: " + 
 hm.get("John Doe")); 
 } 
} 

该程序的输出如下所示:

Todd Hall: 99.22 
Ralph Smith: -19.08 
John Doe: 3434.34 
Jane Baker: 1378.0 
Tom Smith: 123.22 
John Doe’s current balance: 4434.34 

程序开始创建一个散列映射,然后将名字的映射增加到平衡表中。接下来,映射的内容通过使用由调用函数entrySet( )而获得的集合“视图”而显示出来。

关键字和值通过调用由Map.Entry定义的getKey( )和getValue( )方法而显示。

注意存款是如何被制成John Doe的账目的。put( )方法自动用新值替换与指定关键字相关联的原先的值。因此,在John Doe的账目被更新后,散列映射将仍然仅仅保留一个“John Doe”账目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值