1. 集合的介绍
几乎每种编程语言中,都有集合结构。
集合比较常见的实现方式时哈希表(后续会学习),我们这里来实现一个封装的集合类。
- 集合的特点
- 集合通常是由一组无序的,不能重复的元素构成
- 和数学中的集合名词比较相似,但是数学中的集合范围更大一些,也允许集合中的元素重复
- 在计算机中,集合通常表示的结构中元素是不允许重复的
- 看成一种特殊的数组
- 其实集合你可以将它看成一种特殊的数组
- 特殊之处在于里面的元素没有顺序,也不能重复
- 没有顺序意味着不能通过下标值进行访问,不能重复意味着相同的对象在集合中只会存在一份
集合的实现
- 我们要像之前学习其他数据结构一样,来学习一下集合
- 最主要的学习方式就是封装一个属于自己的集合类,并且可以通过该类进行集合相关的操作
- 2011年6月份发布的ES5中已经包含了Array类
- 2015年6月份发布的ES6中包含了Set类,所以其实我们可以不封装直接使用它
- 但是这里,为了明确集合的内部实现机制,我们这里还是自己来封装一下这个Set类
2. 集合的封装
像前面封装其他数据类型一样,我们也来封装一下集合类(Set类)。
创建集合类
我们先来封装一个Set类
代码解析:
- 代码就是封装了一个集合的构造函数
- 在集合中,添加了一个items属性,用于保存之后添加到集合中的元素,因为Object的keys本身就是一个集合
- 后续我们给集合添加对应的操作方法
3. 集合的常见操作
集合有哪些常见的操作方法呢?
- add(value):向集合添加一个新的项。
- remove(value):从集合移除一个值。
- has(value):如果值在集合中,返回true,否则返回false。
- clear():移除集合中的所有项。
- size():返回集合所包含元素的数量。与数组的length属性类似。
- values():返回一个包含集合中所有值的数组。
- 还有一些集合其他相关的操作,暂时用不太多,这里暂不封装
我们来一个个实现这些方法,相对都比较简单。