一、 Collecton 集合遍历方式
1.迭代器(专门用来遍历集合的,数组没有迭代器,java里面迭代器的代表是Iterator)
public static void main(String[] args) {
Collection<String> c = new ArrayList<>();
c.add("1");
c.add("2");
c.add("3");
c.add("4");
System.out.println(c);
//使用迭代器遍历集合
//从集合对象获取迭代器对象
Iterator<String> it = c.iterator();
//1. 手动循环
// System.out.println(it.next());
//System.out.println(it.next());
//System.out.println(it.next());
//如果超出c的长度会报错
//2. 迭代器遍历
while (it.hasNext()) {
String ele = it.next();
System.out.println(ele);
}
//不可以在里面写两次 System.out.println(it.next());
// 会每次跳过一个判断是否为空 当集合内元素是单数时会报错
}
2. 增强for 循环
- 格式:for (元素的数据类型 变量名: 数组或集合) { }
- 增强for可以用来遍历集合或者数组
- 增强for遍历集合,本质就是迭代器遍历集合的简化写法
- 快捷写法:集合名称.for
public static void main(String[] args) {
Collection<String> c = new ArrayList<>();
c.add("1");
c.add("2");
c.add("3");
c.add("4");
System.out.println(c);
//使用for遍历集合或数组
for (String ele : c){
System.out.println(ele);
}
String[] names = {"Jam","Sam","java"};
for (String name : names) {
System.out.println(name);
}
}
3. Lambda表达式遍历集合
- 需要使用Collection的如下方法完成 default void forEach(Consumer<? super T> action)
public static void main(String[] args) {
Collection<String> c = new ArrayList<>();
c.add("1");
c.add("2");
c.add("3");
c.add("4");
System.out.println(c);
//default void forEach(Consumer<? super T> action): 结合Lambda表达式遍历集合
c.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
//化简形式
c.forEach((String s) -> System.out.println(s));
c.forEach( s -> System.out.println(s));
c.forEach(System.out::println);
}
二. 案例:获取电影信息
- 前提:创建一个Movie类 :
private String name; private double score; private String actor;
public static void main(String[] args) {
//创建一个集合容器负责存储多部电影
Collection<Movie> movies = new ArrayList<>();
movies.add(new Movie("《肖申克的救赎》",9.7,"罗宾斯"));
movies.add(new Movie("《霸王别姬》",9.6,"张国荣 张丰毅"));
movies.add(new Movie("《阿甘正传》",9.5,"汤姆.汉克斯"));
System.out.println(movies);
for (Movie movie : movies) {
System.out.println("电影名是:" + movie.getName());
System.out.println("评分:" + movie.getScore());
System.out.println("主演:" + movie.getActor());
System.out.println("-------------------------------");
}
}