**
produces
- 通过Map可以生成Collection ```java Set
keySet();
Collection<V> values();Set<Map.Entry<K, V>> entrySet();
> - 通过Collection可以生成Iterator> ```javaIterator<E> iterator();
- 通过List可以生成ListIterator ```java ListIterator
listIterator();
ListIterator<E> listIterator(int index);
> 表示接口之间的继承或者抽象类实现接口;表示类之间的继承<a name="M8taN"></a>## Iterator迭代器,用于迭代```java// 迭代中如果还有元素就返回trueboolean hasNext();// 返回迭代中的下一个元素。如果迭代没有更多的元素返回NoSuchElementExceptionE next();/*** 从集合中移除迭代器返回的最后一个元素* 迭代过程中如果集合自身被修改,该迭代器行为是未指定的,可能会抛出异常,* 这时候使用这个迭代器本身的remove方法就不会出现这些问题*/default void remove() {throw new UnsupportedOperationException("remove");}// 对集合中剩余的元素进行操作,直到元素完毕或者抛出异常default void forEachRemaining(Consumer<? super E> action) {Objects.requireNonNull(action);while (hasNext())action.accept(next());}
ListIterator
可以双向迭代,next()查下一个元素,previous()查前一个元素
// Query Operations// 列表向后遍历有元素,返回trueboolean hasNext();// 返回列表中的下一个元素,如果迭代没有下一个元素,则抛出NoSuchElementExceptionE next();// 列表向前遍历有元素,返回trueboolean hasPrevious();// 返回列表中的前一个元素,如果迭代没有前一个元素,则抛出NoSuchElementExceptionE previous();// 返回后续调用next将返回的元素的索引(如果列表迭代器位于列表的末尾,则返回列表大小)int nextIndex();// 返回将由后续调用previous返回的元素的索引(如果列表迭代器位于列表的开头,则返回-1)int previousIndex();// Modification Operations/*** 从列表中删除next或previous(可选操作)返回的最后一个元素* 每次调用next或previous只能调用一次* 只有在最后一次对next或previous的调用之后没有调用add时,才可以执行此操作*/void remove();/*** 用指定的元素替换next或previous返回的最后一个元素(可选操作)* 只有在上次对next或previous的调用之后既没有调用remove也没有调用add时,才能执行此调用*/void set(E e);/*** 将指定的元素插入到列表中(可选操作)*/void add(E e);
Collection
public interface Collection
……
}


Map
public interface Map
……
}

