List
package com.lin.Iterator;
import java.util.ArrayList;
import java.util.Iterator;
public class Test_List_Set_Iterator {
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("hello");
arrayList.add("world");
arrayList.add("java");
//使用Iterator迭代器进行遍历
Iterator<String> iterator = arrayList.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
set
package com.lin.Iterator;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
public class Test_List_Set_Iterator {
public static void main(String[] args) {
HashSet<Integer> hashSet = new HashSet<>();
hashSet.add(123);
hashSet.add(456);
hashSet.add(789);
Iterator<Integer> iterator1 = hashSet.iterator();
while (iterator1.hasNext()){// 有元素吗?
System.out.println(iterator1.next());//有就取出
}
}
}
补充知识
ListIterator 是iterator的补充 ,可以进行逆向遍历
ListIterator可以避免一个叫做并发修改异常的bug
一般我们遍历集合的时候,就不能添加元素,因为线程不知道应该执行那一步,所以就会造成一个异常 并发修改异常
解决方式
public class TestListIterator {
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("hello");
arrayList.add("world");
arrayList.add("java");
ListIterator<String> ite =arrayList.listIterator();
//ListIterator是Iterator接口的扩展
while(ite.hasNext()){
String str=ite.next();
if ("world".equals(str)) {
ite.add("lin");
}
}
System.out.println(arrayList);
System.out.println("逆向遍历");
while (ite.hasPrevious()){//前面有元素吗
System.out.println(ite.previous());//取出前面的元素
}
}
}