


package com.atguigu.java1;import org.junit.Test;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;/** * 集合元素的遍历操作,使用迭代器Iterator接口 * 1.内部的方法:hasNext() 和 next() * 2.集合对象每次调用iterator()方法都得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前 * 3.内部定义了remove(),可以在遍历的时候,删除集合中的元素。此方法不同于集合直接调用remove() * * * @author Dxkstart * @create 2021-05-19 15:30 */public class IteratorTest { @Test public void test() { Collection coll = new ArrayList(); coll.add("AA"); coll.add(123); coll.add(new String("Tom")); coll.add(new Person("Jerry", 20)); coll.add(false); Iterator iterator = coll.iterator(); //方式一:// System.out.println(iterator.next());//按顺序一个一个输出// System.out.println(iterator.next());// System.out.println(iterator.next());// System.out.println(iterator.next()); //方式二:不推荐// for(int i = 0;i<coll.size();i++){// System.out.println(iterator.next());// } //方式三:推荐 while (iterator.hasNext()) { //next():①指针下移 ②将下移以后集合位置上的元素返回 System.out.println(iterator.next()); } } @Test public void test2() { Collection coll = new ArrayList(); coll.add("AA"); coll.add(123); coll.add(new String("Tom")); coll.add(new Person("Jerry", 20)); coll.add(false); //错误方式一: Iterator iterator = coll.iterator();// while((iterator.next()) != null){// System.out.println(iterator.next());// } //错误方式三: //集合对象每次调用iterator()方法都得到一个全新的迭代器对象, // 默认游标都在集合的第一个元素之前。// while(coll.iterator().hasNext()){// System.out.println(coll.iterator().next());// } } //测试Iterator中的remove() @Test public void test3() { Collection coll = new ArrayList(); coll.add("AA"); coll.add(123); coll.add(new String("Tom")); coll.add(new Person("Jerry", 20)); coll.add(false); //删除集合中的"Tom" Iterator iterator = coll.iterator(); while(iterator.hasNext()){ Object obj = iterator.next(); if("Tom".equals(obj)){ iterator.remove(); } } System.out.println("****"); iterator= coll.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()); } }}

package com.atguigu.java1;import org.junit.Test;import java.util.ArrayList;import java.util.Collection;/** * JDK 5.0 新增了foreach循环,用于遍历集合、数组 * * @author Dxkstart * @create 2021-05-19 17:08 */public class ForTest { @Test public void test1(){ Collection coll = new ArrayList(); coll.add("AA"); coll.add(123); coll.add(new String("Tom")); coll.add(new Person("Jerry", 20)); coll.add(false); //for(集合元素的类型 局部变量 :集合对象) //内部仍然调用了迭代器。 for(Object obj : coll){ System.out.println(obj); } } @Test public void test2(){ int[] arr = new int[]{1,2,3,4,5,6,7}; //for(数组元素的类型 局部变量 :数组对象)// for(Object obj){ for(int i : arr){ System.out.println(i); } } //练习题 @Test public void test3(){ String[] arr = {"MM", "MM", "MM", "MM", "MM"};// //方式一:普通for赋值// for(int i = 0;i<arr.length;i++){// arr[i] = "GG";// }//// for(int i = 0;i<arr.length;i++){// System.out.println(arr[i]);//"GG"// } //方式二:增强for赋值 for(String str : arr){ str = "GG"; } for(String str : arr){ System.out.println(str);//"MM" } }}