关联数组可以有两种操作:
插入一个关键字和对应的值
通过关键字查询与之对应的值
典型的应用有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的判断,类型的判断。
原文地址:http://blog.csdn.net/caipeichao2/article/details/29598033