我们可以设计一个背包API:
public class Bag<Item> implements Iterable<Item>
bag() 创建一个背包
void add(Item item) 添加一个元素
boolean isEmpty() 背包是否为空
int size() 背包中的元素数量
使用链表实现背包类(其中实现了迭代器):
public class Bag<Item> implements Iterable<Item> {
private Node first;
private int n;
private class Node { //结点类
private Item item;
private Node next;
}
public Bag()
{first = null; n = 0;}
public boolean isEmpty() { return first == null; }
public int size() { return n;}
public void add(Item item) {
Node oldfirst = first;
first = new Node();
first.item = item;
first.next = oldfirst;
n++;
}
public Iterator<Item> iterator() { return new ListIterator(); }
private class ListIterator implements Iterator<Item> { //迭代器
private Node current;
public ListIterator() { current = first; }
public boolean hasNext() { return current != null;}
public void remove() { throw new UnsupportedOperationException();}
public Item next() {
if (!hasNext()) throw new NoSuchElementException();
Item item = current.item;
current = current.next;
return item;
}
}
}