一:集合元素的遍历,使用迭代器Iterator接口
1.内部方法hasNext()和Next()使用
2.集合对象每次调用iterator()方法都会得到一个全新的迭代器对象,
默认游标都在集合的第一个元素之前
3.内部定义了remove(),可以在遍历的时候,删除集合中的元素。此方法不同于集合直接调用remove()e
public class IteratorTest {
@Test
public void test1(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new String("px"));
coll.add(false);
coll.add(new Person("mm",19));
Iterator iterator = coll.iterator();
// //方式一
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// //报异常:NoSuchElementException
// //System.out.println(iterator.next());
//方式二:不推荐
// for (int i = 0; i < coll.size(); i++) {
// System.out.println(iterator.next());
// }
//方式三:推荐
while (iterator.hasNext()){
System.out.println(iterator.next()
);
}
}
@Test
public void test2(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new String("px"));
coll.add(false);
coll.add(new Person("mm",19));
//错误方法一
// Iterator iterator = coll.iterator();
// while ((iterator.next())!=null){
// System.out.println(iterator.next());
// }
//错误方法二
// while ((coll.iterator().hasNext())){
// System.out.println(coll.iterator().next());
// }
}
//测试Iterator中的remove
//如果还未调用next()或者在上一次调用next()方法之后已经调用remove()方法
//在调用remove()都会报IllegalStateException
@Test
public void test3(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new String("px"));
coll.add(false);
coll.add(new Person("mm",19));
Iterator iterator = coll.iterator();
while (iterator.hasNext()){
Object obj = iterator.next();
if("px".equals(obj)){
iterator.remove();;
}
}
Iterator iterator1 = coll.iterator();
while (iterator1.hasNext()){
System.out.println(iterator1.next());
}
}
}
二:DK5.0新增了foreach,用于遍历集合,数组
for(集合中元素的类型 局部变量 : 集合对象)
内部仍然调用的时迭代器
public class ForTest {
@Test
public void test1(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new String("px"));
coll.add(false);
coll.add(new Person("mm",19));
//for(集合中元素的类型 局部变量 : 集合对象)
//内部仍然调用的时迭代器
for (Object obj : coll){
System.out.println(obj );
}
}
@Test
public void test2(){
int[] arr = new int[]{1,2,3,4,5,6};
for(int i : arr){
System.out.println(i);
}
}