各个集合迭代器的选择:
list和数组使用随机访问方式进行迭代(for循环方法)
Set和Queue迭代器迭代(for-each方式)
Map使用(entry视图或key视图)
package com.gongxy.demo;
import java.util.*;
/**
* 迭代器(遍历)
* 一、可迭代标接口(java.lang.Iterable)
* Iterator<T> iterator()//返回一个迭代器
* 实现此接口的类表示可以没迭代的
* 二、三种迭代器
* 1)老的迭代器:java.util.Enumeration
* hasMoreElements()//是都还有元素
* nextElement()//下一个元素
* 2)新的迭代器:java.util.Iterator
* hasNext()//是都还有元素
* E next()//下一个元素
* void remove()//删除刚获取的元素
* 3)针对List的迭代器:java.util.ListIterator
* //正向遍历
* boolean hasNext()//是都还有元素
* E next() //下一个元素
* int nextIndex()//下一个下标
* //逆向遍历
*
*/
public class IterableTest {
public static void main(String[] args) {
listIteratorTest();
}
/**
* HashSet 不保证迭代顺序
*/
static void iteratorTest(){
Set<String> set = new HashSet<String>();
set.add("a");
set.add("z");
set.add("c");
set.add("g");
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
/*
a
c
g
z
*/
}
for (String item:
set) {
System.out.println(item);
}
}
/**
* list常用遍历方式为数组遍历方式,不是使用迭代器,通过下标访问更高效
*/
static void listIteratorTest(){
List<String> list = new ArrayList<String>();
list.add("a");
list.add("c");
list.add("e");
list.add("b");
list.add("g");
//数组方式遍历
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
ListIterator<String> listIterator = list.listIterator();
//正向
while(listIterator.hasNext()){
System.out.println(listIterator.next());
}
//反向
while(listIterator.hasPrevious()){
System.out.println(listIterator.previous());
}
for (String item:
list) {
System.out.println(item);
}
}
}