遍历集合可以采用增强for循环,lambda表达式,以及Iterator三种方法
需要注意的是lambda表达式,Iterator在取出某一电影全部信息时需要重写toString方法,否则打印的是地址,(Iterator在取出某一电影部分信息时不重写toString方法也能打印出内容而非地址)
使用iterator需要定义新的Iterator对象(例:Iterator<Movies> oo=movie.iterator();)
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Iterable1 {
public static void main(String[] args) {
Collection<Movies> movie=new ArrayList<>();
movie.add(new Movies("绿皮书",9.2,"a"));
movie.add(new Movies("阿甘正传",8.6,"a"));
movie.add(new Movies("肖申克的救赎",8.9,"c"));
System.out.println(movie);//不重写toString方法,打印的是地址
//法一:
for (Movies m : movie) {
System.out.println(m.getName());//不重写取出的也是内容而非地址
System.out.println(m.getScore());
System.out.println(m.getActor());
}
System.out.println("-----------------");
//法二:
Iterator<Movies> oo= movie.iterator();
while (oo.hasNext()) {
Movies a=oo.next();//.getActor();加上后面展示的是演员信息
System.out.println(a);//取部分信息时不重写取出的也是内容而非地址
//全部信息时取的是地址
// double b=oo.next().getScore();
// System.out.println(b);
// System.out.println(oo.next().getScore());
// System.out.println(oo.next().getActor());
}
//法三:
movie.forEach(System.out::println);//不重写toString方法,打印的是地址
}
}
class Movies{
private String name;
private double score;
private String actor;
public Movies() {
}
public Movies(String name, double score, String actor) {
this.name = name;
this.score = score;
this.actor = actor;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public String getActor() {
return actor;
}
public void setActor(String actor) {
this.actor = actor;
}
@Override
public String toString() {
return "Movies{" +
"name='" + name + '\'' +
", score=" + score +
", actor='" + actor + '\'' +
'}';
}
}