package com.arithmetic;import java.util.Iterator;
import java.util.NoSuchElementException;/*** 背包* 是一种不支持删除元素的集合数据类型。* 它的目的是帮助我们收集元素和迭代所有元素*/
public class Bag<Item> implements Iterable<Item> {private Node<Item> first;private int n;private static class Node<Item> {private Item item;private Node<Item> next;}// 创建一个空的背包public Bag() {first = null;n = 0;}// 加入一个元素void add(Item item) {Node<Item> oldFirst = first;first = new Node<Item>();first.item = item;first.next = oldFirst;n++;}boolean isEmpty() {return first == null;}int size() {return n;}@Overridepublic Iterator<Item> iterator() {return new ListIterator<Item>(first);}private static class ListIterator<Item> implements Iterator<Item> {private Node<Item> current;public ListIterator(Node<Item> first) {current = first;}@Overridepublic boolean hasNext() {return current != null;}@Overridepublic Item next() {if (!hasNext()) throw new NoSuchElementException();Item item = current.item;current = current.next;return item;}@Overridepublic void remove() {throw new UnsupportedOperationException();}}public static void main(String[] args) {Bag<String> bag = new Bag<String>();bag.add("1");bag.add("2");bag.add("3");Iterator<String> iterator = bag.iterator();while (iterator.hasNext()) {System.out.println(iterator.next());}}
}