映射表: 实现键与值之间的关联。
-
映射表提供了一种关联关系,在称为键的标识标记和其关联值之间建立关联,而关联值通常是比键要大得多且复杂得多的结构。
-
在Java集合框架中,Map是一个接口,必须用实现了Map接口的具体类来构建其对象。
-
应用:如编程语言的解释器需要能够将值赋值给变量,然后用名字来引用它。映射表使维护变量名与其对应的值之间的关联变得容易。
HashMap类: 实现映射表思想的类之一,与TreeMap相较,HashMap在迭代其元素时处理键的效率更高,但遍历键的顺序看起来像是随机的,对于需要按顺序处理键的应用来说,使用起来方便性相对欠缺。
TreeMap类: 效率略差,但优势是键是按照它们的内在的顺序被迭代的。
映射表抽象
Map接口的结构
Map需要用类型参数来指定键的类型和值的类型。
Map<String, String> dict = new TreeMap<String, String>();
Map<String, Double> varTable = new HashMap<String, Double>();
创建不包含任何键和值的空映射表。随后需要将键/值对添加到映射表中。
Map接口指定的常用方法
方法 | 作用 |
---|---|
size() | 返回该映射表中所包含的键/值对的数量 |
isEmpty() | 如果该映射表为空,则返回true |
put(key,value) | 在该映射表中将指定的键与值关联起来。如果key之前没有定义过,那么就会添加一个新的项;如果该关联之前已经存在,那么旧的值就会被丢弃并替换成新的值 |
get(key) | 返回该映射表中当前与key关联的值。如果key未定义,则get返回null |
remove(key) | 从映射表中移除key以及与其相关联的值。如果key不存在,则该调用不会对映射表产生影响 |
containKey(key) | 如果key与某个值相关联,则返回true |
clear() | 移除该映射表中的所有键/值对 |
keyset() | 返回该映射表中所有键构成的集合 |
这些方法实现映射表基础行为的方法是put和get。
Map抽象的操作
- 将varTable声明为Map<String, Double>,然后将其初始化成一个HashMap:
- 使用put建立新的关联。如调用
varTable.put("pi",3.14159);
//其效果是添加了一项在键“pi”和值3.14159之间的关联:
类似,调用
varTable.put("e",2.71828);
- 使用get来获取这些值。
调用
varTable.get("e");
//将返回数值2.71828
调用
varTable.get("pi");
//将返回数值3.14159
- 通过put来修改映射表中得值
varTable.put("pi",3.0);
调用remove来彻底移除一个键
varTable.remove("pi");