本篇文章主要介绍golang里集合的实现思路。
什么是集合?
集合通常是由一组无序的, 不能重复的元素构成
功能
- 添加元素
- 删除元素
- 获取集合的元素数量
- 检查集合是否包含某元素
- 清空集合
- 判断集合是否为空
- 集合转数组
- 复制
接口设计如下:
1 | type Set interface { |
具体实现
线程不安全
我们使用golang的map
来实现集合
1 | import ( |
线程安全的集合
在非线程安全集合的基础上,通过读写锁实现线程安全。
1 | import "sync" |
初始化函数
1 | func ThreadSafe(items ...interface{}) Set { |
单元测试
1 | import ( |
- 本文作者: Hongker
- 本文链接: https://hongker.github.io/2020/08/04/algorithm-set/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!