golang 数组之间的交集,差集,并集,补集
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了golang 数组之间的交集,差集,并集,补集,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1904字,纯文字阅读大概需要3分钟。
内容图文
今天公司需求两个数组之间的差集,类库下不下来,就独立出来了一份,希望读者有用
package model import ( " sort " " sync " ) type Set struct { sync.RWMutex m map[ int]bool } // 新建集合对象 func New(items ...int) *Set { s := &Set{ m: make(map[int]bool, len(items)), } s.Add(items...) return s } // 添加元素 func (s *Set) Add(items ...int) { s.Lock() defer s.Unlock() for _, v := range items { s.m[v] = true } } // 删除元素 func (s *Set) Remove(items ...int) { s.Lock() defer s.Unlock() for _, v := range items { delete(s.m, v) } } // 判断元素是否存在 func (s *Set) Has(items ...int) bool { s.RLock() defer s.RUnlock() for _, v := range items { if _, ok := s.m[v]; !ok { returnfalse } } returntrue } // 元素个数 func (s *Set) Count() int { return len(s.m) } // 清空集合 func (s *Set) Clear() { s.Lock() defer s.Unlock() s.m = map[int]bool{} } // 空集合判断 func (s *Set) Empty() bool { return len(s.m) == 0 } // 无序列表 func (s *Set) List() []int { s.RLock() defer s.RUnlock() list := make([]int, 0, len(s.m)) for item := range s.m { list = append(list, item) } return list } // 排序列表 func (s *Set) SortList() []int { s.RLock() defer s.RUnlock() list := make([]int, 0, len(s.m)) for item := range s.m { list = append(list, item) } sort.Ints(list) return list } // 并集 func (s *Set) Union(sets ...*Set) *Set { r := New(s.List()...) for _, set := range sets { for e := range set.m { r.m[e] = true } } return r } // 差集 func (s *Set) Minus(sets ...*Set) *Set { r := New(s.List()...) for _, set := range sets { for e := range set.m { if _, ok := s.m[e]; ok { delete(r.m, e) } } } return r } // 交集 func (s *Set) Intersect(sets ...*Set) *Set { r := New(s.List()...) for _, set := range sets { for e := range s.m { if _, ok := set.m[e]; !ok { delete(r.m, e) } } } return r } // 补集 func (s *Set) Complement(full *Set) *Set { r := New() for e := range full.m { if _, ok := s.m[e]; !ok { r.Add(e) } } return r }
谢谢大家,谢谢!
原文:https://www.cnblogs.com/tsxylhs/p/11267326.html
内容总结
以上是互联网集市为您收集整理的golang 数组之间的交集,差集,并集,补集全部内容,希望文章能够帮你解决golang 数组之间的交集,差集,并集,补集所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。