1.1 符号表
符号表主要运用于键值对(key-value)的操作。用例能够将一个键值对插入符号表,并希望在以后能够从符号表中按照键(key)找到相应的值(value)。
符号表从某种意义上与数组类似,数组通过下标来寻找值,符号表通过key来寻找值。
符号表的规则也与数组类似:
1. 每个key只对应一个value;
2. 当向表中存入的key与已有的key冲突时,新的value会覆盖旧的value;
3. key不能为null
4. value不能为null
1.1.1 一个简单符号表API
方法名称 | 功能 |
---|---|
void put(Key key, Value val) | 将键值对存入符号表(如果val为空,删除键key) |
Value get(Key key) | 获取key对应的值(如果不存在,返回null) |
void delete(Key key) | 从表中删除键key(以及其对应值) |
boolean contains(Key key) | 表中是否存在键key |
boolean isEmpty() | 表是否为空 |
int size() | 返回表中的键值对数量 |
关于Key的等价
在数组中,我们通过(==)判断整数下标的等价性,但在符号表中,Key可以是String,甚至复杂的对象。因此在判断Key的等价性时,我们要自己实现相应的等价方法,Java中的思路是根据需要重写相应类型的equals()方法。如果需要对Key进行排序,实现有序符号表,则Key需要继承Comparable。