**
produces
- 通过Map可以生成Collection ```java Set
keySet();
Collection<V> values();
Set<Map.Entry<K, V>> entrySet();
> - 通过Collection可以生成Iterator
> ```java
Iterator<E> iterator();
- 通过List可以生成ListIterator ```java ListIterator
listIterator();
ListIterator<E> listIterator(int index);
> ![image.png](https://cdn.nlark.com/yuque/0/2021/png/2602548/1614068081949-411efd63-a4b7-4eed-8491-7d03987c2639.png#align=left&display=inline&height=27&margin=%5Bobject%20Object%5D&name=image.png&originHeight=54&originWidth=39&size=1501&status=done&style=none&width=19.5)表示接口之间的继承或者抽象类实现接口;![image.png](https://cdn.nlark.com/yuque/0/2021/png/2602548/1614068246736-1985aa5a-ece6-4579-a242-a77f878d2d86.png#align=left&display=inline&height=25&margin=%5Bobject%20Object%5D&name=image.png&originHeight=49&originWidth=31&size=1373&status=done&style=none&width=15.5)表示类之间的继承
<a name="M8taN"></a>
## Iterator
迭代器,用于迭代
```java
// 迭代中如果还有元素就返回true
boolean hasNext();
// 返回迭代中的下一个元素。如果迭代没有更多的元素返回NoSuchElementException
E 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
// 列表向后遍历有元素,返回true
boolean hasNext();
// 返回列表中的下一个元素,如果迭代没有下一个元素,则抛出NoSuchElementException
E next();
// 列表向前遍历有元素,返回true
boolean hasPrevious();
// 返回列表中的前一个元素,如果迭代没有前一个元素,则抛出NoSuchElementException
E 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
……
}