1. package main
  2.  
  3. import (
  4. "fmt"
  5. "sync"
  6. )
  7.  
  8. type object interface{}
  9. type Set struct {
  10. m map[object]bool
  11. sync.RWMutex //线程安全实现,记录下
  12. }
  13.  
  14. //初始化
  15. func New() *Set {
  16. return &Set{
  17. m: map[object]bool{},
  18. }
  19. }
  20.  
  21. func (s *Set) Add(item object) {
  22. s.Lock()
  23. defer s.Unlock()
  24. s.m[item] = true
  25. }
  26.  
  27. func (s *Set) Remove(item object) {
  28. s.Lock()
  29. defer s.Unlock()
  30. delete(s.m, item)
  31. }
  32.  
  33. func (s *Set) Clean() {
  34. s.m = map[object]bool{}
  35. }
  36. func (s *Set) Len() int {
  37. return len(s.m)
  38. }
  39.  
  40. func (s *Set) Contains(item object) bool {
  41. _, ok := s.m[item];
  42. return ok
  43. }
  44.  
  45. func (s *Set) IsEmpty() bool {
  46. fmt.Println(len(s.m))
  47. return len(s.m) > 0
  48. }
  49.  
  50. func main() {
  51. s := New()
  52. fmt.Println(s.IsEmpty())
  53. s.Add("aaa")
  54. fmt.Println(s.IsEmpty())
  55. s.Add("1")
  56. s.Add("2")
  57. s.Add("3")
  58. fmt.Println(s.Contains("3"))
  59. //s.Clean()
  60. for key, _ := range s.m {
  61. fmt.Println("Key:", key)
  62. }
  63. }

随机推荐

  1. BZOJ1855 [Scoi2010]股票交易[单调队列dp]

    题 题面有点复杂,不概括了. 后面的状态有前面的最优解获得大致方向是dp.先是瞎想了个$f[i][j]$表示第$i$天手里有$j$张股票时最大收入(当天无所谓买不买). 然后写了一个$O(n^4)$状 ...

  2. bzoj 3771: Triple 快速傅里叶变换 FFT

    题目大意: 给出\(n\)个互不相同的物品,每个物品有价值\(x_i(x_i \leq 40000)\)如果可以从中取一个或两个或三个物品.问能够组合出来的所有价值和对应的方案数,全部输出.取值时,\ ...

  3. [转]ECMAScript5 Object的新属性方法

    虽然说现在并不是所有的浏览器都已经支持ECMAScript5的新特性,但相比于ECMAScript4而言ECMAScript5被广大浏览器厂商广泛接受,目前主流的浏览器中只有低版本的IE不支持,其它都 ...

  4. BZOJ3123:[SDOI2013]森林

    浅谈主席树:https://www.cnblogs.com/AKMer/p/9956734.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem.p ...

  5. Vijos:P1234口袋的天空

    背景 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空. 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖. 描述 给你云朵的个数N,再给你M个关系,表示哪些云朵可以连在一起. ...

  6. zk 04之 Zookeeper Api(java)与应用

    如何使用 Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储 ...

  7. 贪心+等价转化 HDU 1489

    等价转换,题意简单来讲如下:在一条直线均匀分布N个村庄,每个村庄要么买酒,要么卖酒,且村庄的买酒和卖酒供需平衡,总和为0,把k个单位的酒从一个村庄运到相邻的村庄需要k个单位的劳动力,输出最小的劳动力. ...

  8. 用idea工具对java打包:命令 mvn clear package,报错

    用idea工具对java打包:命令 mvn clear package,报错 网上都是eclipse的,要么是project structure和setting的(当然这俩也要用) 我都试了,每一个能 ...

  9. cnblogs开源合集

    http://www.cnblogs.com/davytitan/p/4135151.html

  10. .Net锦囊-C#,.Net发送邮件三种方法…

    最近公司由于一个R&I项目的需要,用户要求在购买产品或出货等一些环节,需要发送邮件提醒或者说每周一让系统自动采集数据发送一封E-mail,因此我也就找来相关资料,写了一个Demo分享给大家,大 ...