首页 > 代码库 > 算法4-5:关联对数组的接口
算法4-5:关联对数组的接口
关联数组可以有两种操作:
插入一个关键字和对应的值
通过关键字查询与之对应的值
典型的应用有DNS查找。
接口
关联数组的接口如下:
public interface ST<Key,Value> { public Value get(Key key); public void remove(Key key); public boolean contains(Key key); public boolean isEmpty(); public int size(); public Iterable<Key> keys(); }
接口有以下规则:
键值对中的数值不能为空
get()方法返回null表示key不存在
put()方法会覆盖现有的值
数据类型
Value的数据类型可以是任意的,但是Key的数据类型必须满足下列条件:
Key必须实现Comparable,也就是说可以比较
Key必须可以通过equals()函数进行比较
最好使用不可变的数据类型作为关键字的数据类型。
等价测试
equals函数必须满足以下性质:
反射性:x.equals(x)必须为true
对称性:x.equals(y)和y.equals(x)是等价的
传递性:x.equals(y) y.equals(z) 推出 x,equals(z)
非空:x.equals(null)必须为false
等价必须满足以下条件:
对象不是null
对象的类型完全相同,继承的类型也不行
关键的成员变量必须相同
代码模板
public final class Date implements Comparable<Data> { private final int month; private final int day; private final int year; public boolean equals(Object y) { if(y == this) return true; if(y == null) return false; if(y.getClass() != this.getClass()) return false; Date that = (Date) y; ... } }
注意this的判断,null的判断,类型的判断。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。