背包是一种不支持从中删除元素的集合数据类型。
API:
Bag() //创建一个空背包
void add(Item item)//向背包中添加一个元素
boolean isEmpty()//判断背包是否为空
int size()//背包中的元素数量
Iterator iterator()//迭代器
用Java语言实现背包类(基于链表):
import java.util.Iterator;
public class Bag<Item> implements Iterable<Item> {
private Node first;//链表首节点
private int size;
//节点内部类
private class Node {
Item item;
Node next;
}
//add方法
public void add(Item item) {
Node oldfirst = first;
first = new Node();
first.item = item;
first.next = oldfirst;
size++;
}
//判断是否为空
public boolean isEmpty() {
return !(new ListIterator().hasNext());
}
//获取背包中元素的数量
public int size() {
return size;
}
//获取迭代器
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 class Test {
public static void main(String[] args) {
//声明Bag对象bag
Bag<Integer> bag = new Bag<Integer>();
//向bag中添加元素
bag.add(1);
bag.add(2);
bag.add(3);
//遍历bag
for (Integer integer : bag) {
System.out.println(integer);
}
//bag中isEmpty方法测试
System.out.println(bag.isEmpty());
//获取bag中元素的数量
System.out.println(bag.size());
}
}
测试结果: