迭代器Iterator与ListIterator
- Iterator
迭代器是一种处理集合的方法,含有next()、hasNext()、remove()三个方法。
next():获取下一个元素
hasNext():检查是否还有元素
remove():删除元素
下面展示遍历ArrayList、HashSet、HashMap.
System.out.println("Iterator迭代器的使用:");
//创建ArrayList
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
//创建HashSet
HashSet<String> set = new HashSet<String>();
set.add("f");
set.add("g");
set.add("h");
set.add("i");
set.add("j");
//创建HashMap
HashMap<Integer,String> map = new HashMap<Integer, String>();
map.put(1,"k");
map.put(2,"l");
map.put(3,"m");
map.put(4,"n");
map.put(5,"o");
//将HashMap中的key值保存到set集合
Set setkey = map.keySet();
//创建迭代器
Iterator<String> it1 = list.iterator();
Iterator<String> it2 = set.iterator();
Iterator<Integer> it3 = setkey.iterator();
//迭代器遍历集合
//遍历输出ArrayList
while(it1.hasNext()){
System.out.println(it1.next());
}
//遍历输出HashSet
while(it2.hasNext()){
System.out.println(it2.next());
}
//遍历set中保存的key值, HashMap通过key值找到对应的vulue值
while(it3.hasNext()){
Integer key = it3.next();
String value = map.get(key);
System.out.println(value);
}
输出结果
- ListIterator
ListIterator是Iterator的子类,只能用于对List及其子类进行操作。
不过里面新增了一些方法:
add(E e):插入元素
set(E e):返回的最后一个元素替换参数e
hashPrevious():迭代器当前位置,反向遍历集合是否存在元素,判断上一个位置是否存在元素
previous():反向遍历集合下一个元素,就是获取上一个元素
System.out.println("ListIterator迭代器的使用:");
//创建ArrayList
ArrayList<String> list2 = new ArrayList<String>();
list2.add("p");
list2.add("q");
list2.add("r");
list2.add("s");
list2.add("t");
System.out.println(list2);
ListIterator<String> listit = list2.listIterator();
listit.add("123");
System.out.println(list2);
while (listit.hasNext()){
String re = listit.next();
if (re.equals("p"))//替换"p"
listit.set("456");
}
System.out.println(list2);
ArrayList<String> list3 = new ArrayList<String>();//空list
ListIterator<String> listit2 = list3.listIterator();
System.out.println(listit2.hasPrevious());