前面我们简单学习了泛型和泛型基本使用,目前我个人来说,在方法或者定义类或者写接口用泛型的机会确实很少,曾经在Java中接口测试中接触过JSON系列化和反序列化会用到泛型。这篇,我们继续学习集合的其他知识,本篇介绍集合中的增强for循环,和一个练习题。
1.增强for循环的格式
为了简化集合或者数组的遍历,Java 1.5版本增加了增强for循环功能,也叫for each循环。他格式如下:
For (元素数据类型 变量 : 数组或者集合对象) {
使用元素操作代码;
}
其实for each循环底层还是用迭代器实现。下面我们分别用一个数组和集合来演示for each循环的基本使用。
package list;
import java.util.ArrayList;
public class Demo1_ForEach {
public static void main(String[] args) {
int[] arr = {11,22,33,44,55,66,77,88};
// 输入 fore然后按下alt+/可以补齐for each循环体代码
for (int i : arr) {
System.out.println(i);
}
System.out.println("--------------------");
//集合演示
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
for (String s : list) {
System.out.println(s);
}
}
}
运行输出:
11
22
33
44
55
66
77
88
--------------------
a
b
c
d
2.集合存储自定义对象使用for each遍历
还是需要我们经常使用的Student.java这个自定义对象。
package collection;
public class Student {
private String name;
private int age;
public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
下面利用增强for循环遍历存储Student对象的ArrayList集合。
package list;
import java.util.ArrayList;
import collection.Student;
public class Demo1_ForEach {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
list.add(new Student("张三",23));
list.add(new Student("李四",24));
list.add(new Student("王五",25));
list.add(new Student("赵六",26));
list.add(new Student("周七",27));
for (Student s : list) {
System.out.println(s.getName()+"..."+s.getAge());
}
}
}
运行结果:
张三...23
李四...24
王五...25
赵六...26
周七...27