假设需要开发一个社交电商网站,在对该系统进行分析和设计时,开发人员发现经常需要对系统中的热门商品、热门博主等数据等进行遍历,为了复用这些遍历代码,开发人员设计了一个抽象的数据集合类AbstractObjectList,AbstractObjectList类的子类ProductList用于存储热门商品数据。 本关任务:请用迭代器模式实现一个遍历热门商品的功能。熟悉自定义迭代器和语言自带迭代器的用法与区别。package step1; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Scanner; public class Client { public static void main(String[] args) { List products = new ArrayList<String>(); Scanner scanner = new Scanner(System.in); int nums = scanner.nextInt(); for (int i = 0; i < nums; i++) { products.add(scanner.next()); } /********** Begin *********/ ///请用java自带的iterator实现products的正向遍历访问 /********** End *********/ System.out.println("--------------------"); /********** Begin *********/ ///请用自定义的iterator实现products的反向遍历访问 /********** End *********/ } }
时间: 2023-06-18 20:02:35 浏览: 255
首先需要定义一个抽象的迭代器接口Iterator,包括hasNext()方法和next()方法。然后定义一个实现了Iterator接口的自定义迭代器类ReverseIterator,用于实现反向遍历功能。最后在Client类中使用Iterator接口的实现类和自定义迭代器类进行遍历。
代码如下:
```java
package step1;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
//定义迭代器接口
interface Iterator {
public boolean hasNext();
public Object next();
}
//定义自定义迭代器类
class ReverseIterator implements Iterator {
private List list;
private int cursor;
public ReverseIterator(List list) {
this.list = list;
this.cursor = list.size() - 1;
}
public boolean hasNext() {
return cursor >= 0;
}
public Object next() {
Object obj = list.get(cursor);
cursor--;
return obj;
}
}
public class Client {
public static void main(String[] args) {
List<String> products = new ArrayList<String>();
Scanner scanner = new Scanner(System.in);
int nums = scanner.nextInt();
for (int i = 0; i < nums; i++) {
products.add(scanner.next());
}
//使用java自带的Iterator进行遍历
System.out.println("正向遍历:");
Iterator<String> iterator = products.iterator();
while (iterator.hasNext()) {
String product = iterator.next();
System.out.println(product);
}
System.out.println("--------------------");
//使用自定义的ReverseIterator进行遍历
System.out.println("反向遍历:");
ReverseIterator reverseIterator = new ReverseIterator(products);
while (reverseIterator.hasNext()) {
String product = (String) reverseIterator.next();
System.out.println(product);
}
}
}
```
阅读全文