背包集合
看该书第一次看到有背包这个集合,以前接触到的背包都是一个概念,用数组或者其他集合进行实现。跑了一下该书代码,发现这个Bag类是作者自己实现的,从algs4.jar导入。
书上对背包的描述为:被保释一种不支持从中删除元素的集合数据类型——它的目的就是帮助用例收集元素并迭代遍历所有搜集到的元素(用例也可以检查背包是否为空或者获取背包中的元素的数量)。迭代的顺序不确定且与用例无关。
看了一下jar包中的实现:
其代码比较简短,如下
package edu.princeton.cs.algs4;
import java.util.Iterator;
import java.util.NoSuchElementException;
public class Bag<Item> implements Iterable<Item> {
private Bag.Node<Item> first = null;
private int n = 0;
public Bag() {
}
public boolean isEmpty() {
return this.first == null;
}
public int size() {
return this.n;
}
public void add(Item item) {
Bag.Node<Item> oldfirst = this.first;
this.first = new Bag.Node();
thi