编程语言中的 set 是任意数量相同类型不同值的未排序集合。Pascal 引入,并被很多语言继承。set 的元素类型被称为 base / universe 类型。Pascal 要求元素必须是离散 base 类型,提供了 union,intersection,和 difference 操作。【译者注:这个 set 几乎等于数学上集合的定义】直觉的实现就是比特数组,第 k 个位置比特为1表示 base type 的第 k 个元素存在在集合中,所以,union 就是位或,intersection 就是位与,difference 就是与非。
不幸的是,比特数组对于比如整数无法很好的工作,在 32 位的机器上需要 500 megabytes。由于这个问题,有些语言限制集合 base 类型的值的数量。
对于从大的 universe 中元素集合,现在语言使用另一种实现,大小与存在的元素成正比,而不是全部 base 类型的值。大多数语言也提供了迭代器访问集合的元素。这里划分了两种,有序和无序,有序的按序迭代,通常使用跳表或者排序树实现,无序的,通常使用 hash 表实现。