一般集合的遍历(输出)基本上不会采用将其变为对象数组的方式,而采用以下三种:
Iterator、ListIterator和foreach(此方法jdk1.5后增加,使用人群不多)
(1)Iterator迭代输出
Iterator本身是一个专门用于输出的操作接口,其接口定义了三种方法:
方法摘要 | |
---|---|
boolean | hasNext() 如果仍有元素可以迭代,则返回 true。 |
E | next() 返回迭代的下一个元素。 |
void | remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。 |
(2)ListIterato双向迭代输出
列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列表中的当前位置。ListIterator 没有当前元素;它的光标位置 始终位于调用 previous() 所返回的元素和调用 next() 所返回的元素之间。长度为 n 的列表的迭代器有 n+1 个可能的指针位置。
Iterator接口的主要功能是完成从前向后的输出,如果想要完成双向输出(从前向后、从后向前)ListIterato接口可实现此功能,ListIterato是 Iterator的子接口,处理本身继承方法外,还有两个重要方法:
boolean | hasPrevious() 如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。 |
E | previous() 返回列表中的前一个元素。 |
注意:如果需要由后向前的输出,需要先由前向后。但collection接口并没有为ListIterato接口实例化的操作,而在List接口中存在此方法:
public ListIterator<E> listIterator()
(3)Map集合的遍历
方法摘要 | |
---|---|
void | clear() 从此映射中移除所有映射关系(可选操作)。 |
boolean | containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。 |
boolean | containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true。 |
Set<Map.Entry<K,V>> | entrySet() 返回此映射中包含的映射关系的 Set 视图。 |
boolean | equals(Object o) 比较指定的对象与此映射是否相等。 |
V | get(Object key) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null 。 |
int | hashCode() 返回此映射的哈希码值。 |
boolean | isEmpty() 如果此映射未包含键-值映射关系,则返回 true。 |
Set<K> | keySet() 返回此映射中包含的键的 Set 视图。 |
V | put(K key, V value) 将指定的值与此映射中的指定键关联(可选操作)。 |
void | putAll(Map<? extends K,? extends V> m) 从指定映射中将所有映射关系复制到此映射中(可选操作)。 |
V | remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。 |
int | size() 返回此映射中的键-值映射关系数。 |
Collection<V> | values() 返回此映射中包含的值的 Collection 视图。 |
根据Map的keyset()方法来获取key的set集合,然后遍历map取得value值。
使用Map.Entry来获取Map中所有的元素,并用此接口实现键-值的分离。