# 集合类型

在Rust标准库中有这样一批原住民，它们天生贵族，当你看到的一瞬间，就能爱上它们, 上面是我瞎编的，其实主要是离了它们不行，不信等会我介绍后，你放个狠话，非它们不用试试？

集合在Rust中是一类比较特殊的类型，因为Rust中大多数数据类型都只能代表一个特定的值，但是它们可以代表一堆。而且与语言级别的数组、字符串类型不同，标准库里的这些家伙是分配在堆上，因此都可以进行动态的增加和减少。

瞧，第一个集合排着整体的队列登场了，它里面的每个元素都雄赳赳气昂昂跟在另外一个元素后面，大小、宽度、高度竟然全部一致，真是令人惊叹。 它就是`Vector`类型，允许你创建一个动态数组，它里面的元素是一个紧挨着另一个排列的。

紧接着，第二个集合在全场的嘘声和羡慕眼光中闪亮登场，只见里面的元素排成一对一对的，彼此都手牵着手，非对方莫属，这种情深深雨蒙蒙的样子真是...挺欠扁的。 它就是`HashMap`类型，该类型允许你在里面存储`KV`对，每一个`K`都有唯一的`V`与之配对。

最后，请用热烈的掌声迎接我们的`String`集合，哦，抱歉，`String`集合天生低调，见不得前两个那样，因此被气走了，你可以去[这里](../compound-type/string-slice)找它.


言归正传，本章所讲的`Vector`、`HashMap`再加上之前的`String`类型，是标准库中最最常用的集合类型，可以说，几乎任何一段代码中都可以找到它们的身影，那么先来看看`Vector`.