迭代器及增强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 }
标签:迭代,iterator,add,Collection,next,器及,coll,println,new 来源: https://www.cnblogs.com/fu-sir/p/15679895.html