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 16:02:50 浏览: 117
以下是对应的代码:
```
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<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());
}
/********** Begin *********/
//请用java自带的iterator实现products的正向遍历访问
Iterator<String> it = products.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
/********** End *********/
System.out.println("--------------------");
/********** Begin *********/
//请用自定义的iterator实现products的反向遍历访问
ReverseIterator<String> reverseIt = new ReverseIterator<String>(products);
while(reverseIt.hasNext()) {
System.out.println(reverseIt.next());
}
/********** End *********/
}
}
class ReverseIterator<E> implements Iterator<E> {
private List<E> list;
private int curr;
public ReverseIterator(List<E> list) {
this.list = list;
this.curr = list.size() - 1;
}
public boolean hasNext() {
return curr >= 0;
}
public E next() {
E ret = list.get(curr);
curr--;
return ret;
}
public void remove() {
throw new UnsupportedOperationException();
}
}
```
第一部分使用了Java自带的Iterator来实现正向遍历访问。
第二部分使用了自定义的ReverseIterator来实现反向遍历访问。需要注意的是,自定义的Iterator需要实现Iterator接口,包括hasNext()和next()两个方法。此外,因为本题只需要实现遍历访问,所以remove()方法可以直接抛出UnsupportedOperationException。
阅读全文