迭代器及增强for循环(Collection接口常用方法(二))

 1 import org.junit.Test;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 import java.util.Iterator;
 6 
 7 /**
 8  * 集合元素的遍历,使用迭代器Iterator接口
 9  * 1.使用内部的方法:hasNext(),next()
10  * 2.集合对象每次调用iterator()方法都会得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前
11  * 3.内部定义了remove(),可以在遍历的时候,删除集合中的元素,此方法不同于集合直接调用remove()
12  * 4.如果还未调用next()或在上一次调用next()方法之后已经调用了remove()方法,再调用remove都会报IllegalStateException
13  * @author fu jingchao
14  * @creat 2021/12/12-15:49
15  */
16 public class IteratorTest {
17     @Test
18     public void test1(){
19         Collection coll = new ArrayList();
20         coll.add("AA");
21         coll.add("BB");
22         coll.add("CC");
23         coll.add(123);//自动装箱
24         coll.add(new String("Tom"));
25         coll.add(789);
26         coll.add(new Person("Jack",20));
27 
28         Iterator iterator = coll.iterator();
29         //方式一:
30 //        System.out.println(iterator.next());//AA
31 //        System.out.println(iterator.next());//BB
32 //        System.out.println(iterator.next());//CC
33 //        System.out.println(iterator.next());//123
34 
35         //方式二
36 //        for (int i = 0; i < coll.size(); i++) {
37 //            System.out.println(iterator.next());
38 //        }
39         //方式三:推荐
40         //hasNext():判断是否还有下一个元素
41         while (iterator.hasNext()){
42             //next():① 指针下移 ② 将下移以后集合位置上的元素返回
43             System.out.println(iterator.next());
44         }
45 
46     }
47     @Test
48     public void test2(){
49         Collection coll = new ArrayList();
50         coll.add("AA");
51         coll.add("BB");
52         coll.add("CC");
53         coll.add(123);//自动装箱
54         coll.add(new String("Tom"));
55         coll.add(789);
56         coll.add(new Person("Jack",20));
57 
58 //        //错误方式一:会导致元素间隔输出,还会出现NoSuchElementException
59 //        Iterator iterator = coll.iterator();
60 //        while (iterator.next() != null){
61 //            System.out.println(iterator.next());
62 //        }
63 
64         //错误方式二:会陷入死循环,不断输出第一个元素
65 //        while (coll.iterator().hasNext()){//集合对象每次调用iterator()方法都会得到一个全新的迭代器对象,默认游标都
66 //                                            // 在集合的第一个元素之前
67 //            System.out.println(coll.iterator().next());
68 //        }
69     }
70 
71     //测试Iterator中的remove()
72     @Test
73     public void test3(){
74         Collection coll = new ArrayList();
75         coll.add("AA");
76         coll.add("BB");
77         coll.add("CC");
78         coll.add(123);//自动装箱
79         coll.add(new String("Tom"));
80         coll.add(789);
81         coll.add(new Person("Jack",20));
82 
83         //删除集合中 "Tom" 数据
84         Iterator iterator = coll.iterator();
85         while (iterator.hasNext()){
86             Object obj = iterator.next();
87             if("Tom".equals(obj)){
88                 iterator.remove();
89             }
90         }
91         System.out.println(coll);
92         Iterator iterator1 = coll.iterator();
93         while (iterator1.hasNext()){
94             System.out.println(iterator1.next());
95         }
96     }
97 
98 
99 }

 

 1 import org.junit.Test;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 
 6 /**
 7  * jdk5.0新增了foreach循环,用于遍历集合和数组
 8  *
 9  * @author fu jingchao
10  * @creat 2021/12/12-17:02
11  */
12 public class ForTest {
13     @Test
14     public void Test1() {
15         Collection coll = new ArrayList();
16         coll.add("AA");
17         coll.add("BB");
18         coll.add("CC");
19         coll.add(123);//自动装箱
20         coll.add(new String("Tom"));
21         coll.add(789);
22         coll.add(new Person("Jack", 20));
23 
24         //for(集合元素的类型  局部变量 :集合对象)
25         //内部任然调用了迭代器。
26         for (Object obj : coll) {
27             System.out.println(obj);
28         }
29     }
30 
31     @Test
32     public void test2() {
33         int[] arr = new int[]{12, 23, 34, 45, 56};
34         for (int arr1 : arr) {
35             System.out.println(arr1);
36         }
37     }
38 
39     //练习题
40     @Test
41     public void test3() {
42         String[] arr = new String[]{"MM", "MM", "MM"};
43 
44 //        for (int i = 0; i < arr.length; i++) {
45 //            arr[i] = "GG";
46 //        }
47 //        for (int i = 0; i < arr.length; i++) {
48 //            System.out.println(arr[i]);//GG GG GG
49 //        }
50         for (String s : arr) {
51             s = "GG";
52         }
53         for (int i = 0; i < arr.length; i++) {
54             System.out.println(arr[i]);//MM MM MM
55         }
56     }
57 }

 

posted @ 2021-12-12 17:30  橘猫的夏天  阅读(51)  评论(0编辑  收藏  举报