go实现set
- package main
- import (
- "fmt"
- "sync"
- )
- type object interface{}
- type Set struct {
- m map[object]bool
- sync.RWMutex //线程安全实现,记录下
- }
- //初始化
- func New() *Set {
- return &Set{
- m: map[object]bool{},
- }
- }
- func (s *Set) Add(item object) {
- s.Lock()
- defer s.Unlock()
- s.m[item] = true
- }
- func (s *Set) Remove(item object) {
- s.Lock()
- defer s.Unlock()
- delete(s.m, item)
- }
- func (s *Set) Clean() {
- s.m = map[object]bool{}
- }
- func (s *Set) Len() int {
- return len(s.m)
- }
- func (s *Set) Contains(item object) bool {
- _, ok := s.m[item];
- return ok
- }
- func (s *Set) IsEmpty() bool {
- fmt.Println(len(s.m))
- return len(s.m) > 0
- }
- func main() {
- s := New()
- fmt.Println(s.IsEmpty())
- s.Add("aaa")
- fmt.Println(s.IsEmpty())
- s.Add("1")
- s.Add("2")
- s.Add("3")
- fmt.Println(s.Contains("3"))
- //s.Clean()
- for key, _ := range s.m {
- fmt.Println("Key:", key)
- }
- }
随机推荐
- BZOJ1855 [Scoi2010]股票交易[单调队列dp]
题 题面有点复杂,不概括了. 后面的状态有前面的最优解获得大致方向是dp.先是瞎想了个$f[i][j]$表示第$i$天手里有$j$张股票时最大收入(当天无所谓买不买). 然后写了一个$O(n^4)$状 ...
- bzoj 3771: Triple 快速傅里叶变换 FFT
题目大意: 给出\(n\)个互不相同的物品,每个物品有价值\(x_i(x_i \leq 40000)\)如果可以从中取一个或两个或三个物品.问能够组合出来的所有价值和对应的方案数,全部输出.取值时,\ ...
- [转]ECMAScript5 Object的新属性方法
虽然说现在并不是所有的浏览器都已经支持ECMAScript5的新特性,但相比于ECMAScript4而言ECMAScript5被广大浏览器厂商广泛接受,目前主流的浏览器中只有低版本的IE不支持,其它都 ...
- BZOJ3123:[SDOI2013]森林
浅谈主席树:https://www.cnblogs.com/AKMer/p/9956734.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem.p ...
- Vijos:P1234口袋的天空
背景 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空. 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖. 描述 给你云朵的个数N,再给你M个关系,表示哪些云朵可以连在一起. ...
- zk 04之 Zookeeper Api(java)与应用
如何使用 Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储 ...
- 贪心+等价转化 HDU 1489
等价转换,题意简单来讲如下:在一条直线均匀分布N个村庄,每个村庄要么买酒,要么卖酒,且村庄的买酒和卖酒供需平衡,总和为0,把k个单位的酒从一个村庄运到相邻的村庄需要k个单位的劳动力,输出最小的劳动力. ...
- 用idea工具对java打包:命令 mvn clear package,报错
用idea工具对java打包:命令 mvn clear package,报错 网上都是eclipse的,要么是project structure和setting的(当然这俩也要用) 我都试了,每一个能 ...
- cnblogs开源合集
http://www.cnblogs.com/davytitan/p/4135151.html
- .Net锦囊-C#,.Net发送邮件三种方法…
最近公司由于一个R&I项目的需要,用户要求在购买产品或出货等一些环节,需要发送邮件提醒或者说每周一让系统自动采集数据发送一封E-mail,因此我也就找来相关资料,写了一个Demo分享给大家,大 ...