现在还不能支持for each循环访问,因为我们还没有实现iterable接口,首先在ArrayMap中实现Iterable接口:
public class ArrayMap<K, V> implements Iterable<K> { private K[] keys; private V[] values; int size; public ArrayMap() { keys = (K[]) new Object[100]; values = (V[]) new Object[100]; size = 0; } .... }然后重写iterator()方法,并在其中返回我们自己的迭代器对象(iterator)
@Override public Iterator<K> iterator() { return new KeyIterator(); }注意我们自定义的KeyIterator类必须要实现Iterator接口,否则在iterator()方法中返回的类型不匹配。
总结与感想(1)学会深入思考,一点点抽丝剥茧,多想想为什么这样实现,很多问题没有自己想象中的那么复杂。