package com.atguigu.java;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* 1.集合元素的遍历操作,使用迭代器Iterator接口内部的方法:hasNext()和 next()
* 2.集合对象每次调用iterator()方法都得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前。
* 3.Iterator可以删除集合的元素,但是是遍历过程中通过迭代器对象的remove方法,不是集合对象的remove方法。
* 4.如果还未调用next()或在上一次调用next方法之后已经调用了remove方法,再调用remove都会报IllegalStateException。
*/
public class IteratorTest {
@Test
public void test1() {
Collection coll = new ArrayList();
coll.add("AA");
coll.add('a');
coll.add(123);
coll.add(new Person("Jerry", 21));
Iterator iterator = coll.iterator();
//next()/hasNext():
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
//remove():
//再次使用需要重新赋一个iterator
iterator = coll.iterator();
while(iterator.hasNext()){
Object obj = iterator.next();
if("AA".equals(obj)){
iterator.remove();
}
}
iterator = coll.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
@Test
public void test2() {
Collection coll = new ArrayList();
coll.add("AA");
coll.add('a');
coll.add(123);
coll.add(new Person("Jerry", 21));
Iterator iterator = coll.iterator();
//错误方式:
while(coll.iterator().hasNext()){
System.out.println(coll.iterator().next());
}
}
@Test
public void test3(){
Collection coll = new ArrayList();
coll.add("AA");
coll.add('a');
coll.add(123);
coll.add(new Person("Jerry", 21));
//for(集合中元素类型 局部变量: 集合对象)
//内部仍然调用了迭代器
for(Object obj : coll){
System.out.println(obj);
}
}
@Test
public void test4(){
int[] array = new int[]{1,2,3,4,5,6};
for(int i : array){
System.out.println(i);
}
}
}
Iterator遍历Collection对象 、foreach遍历Collection对象
最新推荐文章于 2022-11-02 21:56:53 发布