今天主要学习了iterator迭代循环
学习了next方法和hasNext方法以及对迭代器的重置
迭代器的执行原理
下面展示代码:
package com.company;
import java.util.ArrayList;
import java.util.Iterator;
public class IteratorMethod {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(new Book("三毛记", "马龙", 15.8));
list.add(new Book("二毛记", "许昕", 18.8));
list.add(new Book("一毛记", "张继科", 16.8));
Iterator iterator = list.iterator();
// 使用hasNext方法检查下一个元素是否存在
while(iterator.hasNext()){
// Object object = iterator.next();
// System.out.println(object);
// 使用iterator.next()遍历下一个元素
System.out.println(iterator.next());
}
// System.out.println(iterator.next());
System.out.println("第二次输出");
// 当退出循环时,此时的iterator指向最后一个元素
// 当我们还需要遍历时,就必须重置迭代器,使用 iterator = list.iterator();
iterator = list.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
class Book{
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public Book(String name, String author, double price) {
this.name = name;
this.author = author;
this.price = price;
}
private String name;
private String author;
private double price;
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
'}';
}
}
结果:
增强for循环,底层仍然是使用了迭代器,可以说是一个简化版的迭代器
源码如图:
调用了hasNext方法
调用了next方法
代码:
for(Object object:list){
System.out.println("obj="+object);
}
结果: