基础知识
所有集合类均未提供相应的遍历方法,而是把遍历交给迭代器完成。迭代器为集合而生,专门实现集合遍历。
1、Iterator方法
- boolean hasNext(): 判断是否存在另一个可访问的元素 。
- Object next(): 返回要访问的下一个元素 。
- void remove(): 删除上次访问返回的对象。
2、可以使用Iterator遍历的本质是 实现Iterable接口。
代码
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/**
* 测试迭代器遍历List、Set、Map
* @author dxt
*
*/
public class TestIterator {
public static void main(String[] args){
//1. 遍历List
testIteratorList();
//2. 遍历Set
testIteratorSet();
//3.1 遍历Map, 方法1
testIteratorMap();
//3.2 遍历Map,方法2
testIteratorMap2();
}
/**
* 迭代器遍历List
*/
public static void testIteratorList(){
//建立list容器,并添加数据
List<String> list = new ArrayList<String>();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("dd");
//初始化一个迭代器对象,然后遍历容器
for(Iterator<String> iter = list.iterator(); iter.hasNext();){
String temp = iter.next(); //next()即返回当前对象,同时游标下移
System.out.println(temp);
}
}
/**
* 迭代器遍历Set
*/
public static void testIteratorSet(){
Set<Integer> set = new HashSet<Integer>();
set.add(10);
set.add(20);
set.add(30);
set.add(5);
for(Iterator<Integer> iter = set.iterator(); iter.hasNext();){
Integer i = iter.next();
System.out.println(i.intValue());
}
}
/**
* 迭代器遍历Map, 第一种方法
*/
public static void testIteratorMap(){
//初始化一个map容器
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(10, "aa");
map.put(20, "bb");
map.put(30, "cc");
//获得节点的Set集合, Entry<K, V>是map中的一个节点
Set<Entry<Integer, String>> ss = map.entrySet();
for(Iterator<Entry<Integer, String>> iter = ss.iterator(); iter.hasNext();){
Entry<Integer, String> temp = iter.next();
System.out.println(temp.getKey() + "--" + temp.getValue());
}
}
/**
* 迭代器遍历Map, 第二种方法
*/
public static void testIteratorMap2(){
//初始化一个map容器
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(10, "aa");
map.put(20, "bb");
map.put(30, "cc");
Set<Integer> keySet = map.keySet();
for(Iterator<Integer> iter = keySet.iterator(); iter.hasNext();){
Integer key = iter.next();
System.out.println(key.intValue() + "---" + map.get(key));
}
}
}