JavaEE-15-Java迭代器 16-增强for
迭代器简介:
迭代器不是集合,而是一种用于访问(遍历)集合的方法,可用于迭代ArralList和HashSet集合。
Iterator 是 Java 迭代器最简单的实现,ListIterator 是 Collection API 中的接口, 它扩展了 Iterator 接口。
迭代器的使用:
迭代器最主要的作用就是逐个返回集合中的元素。
使用步骤为:通过while循环调用hasNext方法,再通过next方法组个调取集合中的元素并将其输出。
1 Collection c=new ArrayList();//定义集合 2 3 c.add("hello");//集合添加元素 4 c.add("world"); 5 c.add("java"); 6 7 Iterator it=c.iterator();//集合调用迭代器 8 while(it.hasNext()) {//通过迭代器遍历集合 9 System.out.println(it.next()); 10 }
通过以上代码可以看出,如果不使用迭代器,我们将需要先将集合转换成数组,再遍历数组元素。
注意:每次使用next()方法,将会移动到下一个位置,所以务必不要连续多次调用next()。
上面的代码中集合存储的对象是字符串,元素单一,所以看起来简单,下面我们存储自定义变量看看。
1.先定义一个学生类(功能类):
1 package cn.itcast_02; 2 /* 3 * 生成无参构造方法 4 * 生成有参构造方法 5 * 生成get和set方法 6 * 生成toString方法 7 */ 8 public class Student { 9 // 成员变量 10 private String name; 11 private int age; 12 13 // 成员方法:get和set方法 14 public String getName() { 15 return name; 16 } 17 18 public void setName(String name) { 19 this.name = name; 20 } 21 22 public int getAge() { 23 return age; 24 } 25 26 public void setAge(int age) { 27 this.age = age; 28 } 29 30 // 构造方法 31 public Student() { 32 super(); 33 } 34 35 public Student(String name, int age) { 36 super(); 37 this.name = name; 38 this.age = age; 39 } 40 41 @Override 42 public String toString() { 43 return "Student [name=" + name + ", age=" + age + "]"; 44 } 45 }
2.再定义测试类(主类):
1 import java.util.ArrayList; 2 import java.util.Collection; 3 import java.util.Iterator; 4 5 /* 6 * 用集合存储5个学生对象并遍历 7 */ 8 public class StudentDemo { 9 public static void main(String[] args) { 10 Collection c = new ArrayList(); 11 12 Student s1 = new Student("benon", 28); 13 Student s2 = new Student("yy", 22); 14 Student s3 = new Student("shaobao", 6); 15 Student s4 = new Student("tianbao", 7); 16 Student s5 = new Student("jiabao", 5); 17 18 c.add(s1); 19 c.add(s2); 20 c.add(s3); 21 c.add(s4); 22 c.add(s5); 23 24 Iterator it = c.iterator(); 25 while (it.hasNext()) { 26 System.out.println(it.next()); 27 } 28 } 29 }
增强for
是JDK1.5之后提出来的for循环的一种
格式:
for(元素数据类型 变量:数组或者集合){
使用变量即可,该变量就是元素
}
好处:简化了数组和集合的遍历
坏处:增强for的目标不能为null
解决办法:对增强for的目标先进行不为null的判断,然后再使用。
1 int[] arr = { 1, 2, 3, 4, 5 }; 2 for (int x : arr) { 3 System.out.println(x); 4 } 5 String[] strArray = { "benon", "yy", "shaobao" }; 6 for (String s : strArray) { 7 System.out.println(s); 8 } 9 ArrayList<String> array = new ArrayList<String>(); 10 array.add("hello"); 11 array.add("world"); 12 array.add("java"); 13 for (String s : array) { 14 System.out.println(s); 15 }
昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否知否,应是绿肥红瘦!