背包是一种不支持从中删除元素的集合数据类型,它的目的就是帮助用例手机元素并迭代遍历所有收集到的元素。理解背包的概念,可以想象一个非常喜欢收集弹子球的人,他将所有的弹子球都放在一个背包里,一次一个,并且会不时在所有的弹子球都放在一个背包里,一次一个,并且会不时在所有的弹子球中寻找某一颗拥有某种特点的弹子球。
import java.util.Iterator;
public class Bag<Item> implements Iterable<Item>
{
private Node first;
private class Node
{
Item item;
Node next;
}
public void add(Item item)
{
Node oldfirst = first;
first = new Node();
first.item = item;
first.next = oldfirst;
}
public Iterator<Item> iterator()
{
return new ListIterator();
}
private class ListIterator implements Iterator<Item>
{
private Node current = first;
public boolean hasNext()
{
return current != null;
}
public Item next()
{
Item item = current.item;
current = current.next;
return item;
}
}
public static void main(String[] args)
{
Bag<String> b = new Bag<String>();
b.add("aaa");
b.add("bbb");
b.add("ccc");
for(Iterator<String> iter=b.iterator();iter.hasNext()==true;)
{
System.out.println(iter.next());
}
}
}
输出
Ccc
Bbb
aaa
和栈如出一辙。不再做小结和分析。