package iterator;/** * 聚合接口,实现该接口的类是聚合类 * * @author duchao * @version [版本号, 2012-10-15] * @see [相关类/方法] * @since [产品/模块版本] */public interface Aggregate{ /** * 返回该聚合类的迭代器 * @return * @see [类、类#方法、类#成员] */ public abstract Iterator iterator();}
/* * 文 件 名: Iterator.java * 版 权: Huawei Technologies Co., Ltd. Copyright YYYY-YYYY, All rights reserved * 描 述: <描述> * 修 改 人: Administrator * 修改时间: 2012-10-15 * 跟踪单号: <跟踪单号> * 修改单号: <修改单号> * 修改内容: <修改内容> */package iterator;/** * 执行递增、遍历的接口 * * @author duchao * @version [版本号, 2012-10-15] * @see [相关类/方法] * @since [产品/模块版本] */public interface Iterator{ /** * 检查是否还有下一个元素 * @return * @see [类、类#方法、类#成员] */ abstract public boolean hasNext(); /** * 取得下一个元素 * @return * @see [类、类#方法、类#成员] */ abstract public Object next();}
package iterator;/** * 书籍类 * * @author duchao * @version [版本号, 2012-10-15] * @see [相关类/方法] * @since [产品/模块版本] */public class Book{ private String name = ""; public Book(String name) { this.name = name; } public String getName() { return name; }}
package iterator;import java.util.Vector;/** * 书架类,实现了Aggregate聚合接口,是一个聚合类 * 又实现了Iterator迭代器接口,自身即有迭代功能 * * @author duchao * @version [版本号, 2012-10-16] * @see [相关类/方法] * @since [产品/模块版本] */public class BookShelf implements Aggregate{ private Vector<Book> books; private int length; private int last = 0; public BookShelf(int capacity) { books = new Vector<Book>(capacity); length = capacity; } /** * 向书架上增加书籍 * @param book * @return * @see [类、类#方法、类#成员] */ public boolean addBook(Book book) { books.addElement(book); last++; if (last > length) { length = last; } return true; } /** {@inheritDoc} */ @Override public Iterator iterator() { return new BookShelfIterator(); } /** * * 书架迭代器类,声明为内部类,如此BookShelf类可以不必对外暴露过多的接口 * * @author duchao * @version [版本号, 2012-10-16] * @see [相关类/方法] * @since [产品/模块版本] */ private class BookShelfIterator implements Iterator { private int index = 0; @Override public boolean hasNext() { if (index < last) { return true; } return false; } @Override public Object next() { Book book = books.get(index); index++; return book; } }}
package iterator;import java.util.LinkedList;import java.util.List;import java.util.Scanner;public class Maintest{ /** <一句话功能简述> * <功能详细描述> * @param args * @see [类、类#方法、类#成员] */ public static void main(String[] args) { int n; System.out.println("请输入需要向书架中添加书籍的数量:"); Scanner scanner = new Scanner(System.in); n = scanner.nextInt(); BookShelf bookShelf = new BookShelf(n); for (int i = 0; i < n + 10; i++) { Book book = new Book("书籍" + i); bookShelf.addBook(book); } Iterator iterator = bookShelf.iterator(); while (iterator.hasNext()) { Book book = (Book)iterator.next(); System.out.println(book.getName()); } } public static void test() { long n; System.out.println("请输入ArrayList中的元素个数:"); Scanner scanner = new Scanner(System.in); n = scanner.nextLong(); long start = 0; long stop = 0; List<String> list = new LinkedList<String>(); for (int i = 0; i < n; i++) { list.add(String.valueOf(i)); } System.out.println("ArrayList初始化完毕,大小为:" + n); start = System.nanoTime(); for (int i = 0; i < list.size(); i++) { String item = list.get(i); item = null; } stop = System.nanoTime(); System.out.println("使用For循环遍历ArrayList所有" + n + "个元素,所花费的时间为" + (stop - start) / 1000000.0 + "毫秒"); start = System.nanoTime(); for (String string : list) { string = null; } stop = System.nanoTime(); System.out.println("使用foreach遍历ArrayList所有" + n + "个元素,所花费的时间为" + (stop - start) / 1000000.0 + "毫秒"); java.util.Iterator<String> iterator = list.iterator(); start = System.nanoTime(); while (iterator.hasNext()) { String item = iterator.next(); item = null; } stop = System.nanoTime(); System.out.println("使用迭代器遍历ArrayList所有" + n + "个元素,所花费的时间为" + (stop - start) / 1000000.0 + "毫秒"); }}