ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-12-12 17:33:16  阅读:121  来源: 互联网

标签:迭代 iterator add Collection next 器及 coll println new


 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 }

 

标签:迭代,iterator,add,Collection,next,器及,coll,println,new
来源: https://www.cnblogs.com/fu-sir/p/15679895.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有