11.3 映射

考虑如何建立一个电话簿程序, 使得用户输入一个人的名字后,程序可以自动找出该人的电话号码, 你可以将所需的数据存放在数组、列表或数学集合中.  但是该解决方案在实际中并不可行. 

抽象数据类型映射也是一种集合, 其中保存的元素都是具有某种单向关联关系的对象对.  这个我们讨论的映射是键(key)对象与值(value)对象之间的映射关系. 一个键只能映射到一个具体的值, 但是却允许多个不同的键映射到同一个值. Java的集合框架定义了一个名为Map的接口来代表这种ADT.

可以将映射理解为两个相互关联的集合:一个保存键的数学集合(set)和一个由每一个键对应的值组成的集合(collection). 

11.3.1 基本的映射操作

在Java集合框架中有两个实现了Map接口的类,他们分别是HashMap和TreeMap类. HashMap 是一种更为通用的映射;而TreeMap能够以有序的方式存在可以比较大小的键对象.

创建一个Map对象时需要指定两个通用类型参数, 两个参数间用逗号隔开. 第一个参数指明键对象的类型,第二个参数指明值对象的类型. 

Map<String, Double>salaryMap = new HashMap<String, Double>();

可以使用Map接口提供的put方法向映射中添加新的键/值对,put方法与其他集合类型提供的add方法基本相同. put方法通过两个参数来分别接收键和值对象, 然后将他们连同映射关系一起保存在Map对象中. 如果新添加的键对象已经与某些值对象建立了映射关系,那么Map会将该键对象映射到新的值对象上. 

salaryMap.put("Stuart Reges", 10000.00);

一旦逆向Map对象添加了一些键/值对,就可以使用get方法来查找其中包含的值对象. 调用get方法时,用户需要提供一个键对象作为输入参数,get方法会将键对象映射的值对象作为结果返回:

double jenSalary = salaryMap.get("Jenny");

需要检查一个给定的键对象在map中是否已经建立映射时, 可以使用containsKey方法, 或者调用get方法然后检查返回值是否为null. 

Map提供的toString方法会打印以逗号分隔的键/值对列表. 

猜你喜欢

转载自blog.csdn.net/cmmsdwj/article/details/85245820
今日推荐