介绍
许多基础数据类型都和对象的集合有关,具体来说,数据类型的值就是一组对象的集合,所有操作都是关于添加、删除或是访问集合中的对象。背包、队列和栈这三种数据类型,不同之处在于删除或者访问对象的顺序不同。
背包是一种不支持从中删除元素的集合数据类型,它的目的就是帮助用例收集元素并迭代遍历所有收集到的元素,迭代的顺序不确定切与用例无关。背包的典型用例:
计算标准输入中的所有double值的平均值和样本标准差。样本标准差为每个值和平均值之差的平方之和除以N-1之后的平方根。
1 | public class BagOfType { |
API
泛型可迭代的背包API:
public class Bag |
|
---|---|
Bag() | 创建一个空背包 |
void add(Item item) | 添加一个元素 |
boolean isEmpty() | 背包是否为空 |
int size() | 背包中的元素数量 |
实现
网站上关于背包的一个实现:用数组实现的可动态调整数组大小的背包实现,后面学习链表会给出一个链表实现的背包。
1 | public class ResizingArrayBag<Item> implements Iterable<Item> { |