Go实现集合set
2015-02-09 13:34
190 查看
package main //支持任意类型添加 import ( "fmt" "sync" ) type inter interface{} type Set struct { m map[inter]bool sync.RWMutex } func New() *Set { return &Set{ m: map[inter]bool{}, } } func (s *Set) Add(item inter) { s.Lock() defer s.Unlock() s.m[item] = true } func (s *Set) Remove(item inter) { s.Lock() s.Unlock() delete(s.m, item) } func (s *Set) Has(item inter) bool { s.RLock() defer s.RUnlock() _, ok := s.m[item] return ok } func (s *Set) Len() int { return len(s.List()) } func (s *Set) Clear() { s.Lock() defer s.Unlock() s.m = map[inter]bool{} } func (s *Set) IsEmpty() bool { if s.Len() == 0 { return true } return false } func (s *Set) List() []inter { s.RLock() defer s.RUnlock() list := []inter{} for item := range s.m { list = append(list, item) } return list } func main() { s := New() s.Add(11) s.Add("aa") for i, k := range s.List() { fmt.Println(i, k) } }
相关文章推荐
- java中Set集合的遍历及实现类比较分析
- Java集合的实现细节—Set集合和Map集合
- Java中的Set集合接口实现插入对象不重复的原理
- golang实现set集合,变相实现切片去重
- 查询字符串中字母的个数(两种实现方式1,list与set集合 2,map集合)
- 多重集合set 的list实现详解
- Java基础知识强化之集合框架笔记47:Set集合之TreeSet保证元素唯一性和比较器排序的原理及代码实现(比较器排序)
- Python 使用list实现简单的集合set
- Set集合和实现类
- Hibernate--Enum类型的set集合映射到数据库(xml配置文件实现方式)
- Java 7之集合类型第6篇 - Set集合的实现
- Java集合源码学习(10)_Set接口的实现HashSet
- Java集合源码学习(9)_Set接口的基础实现AbstractSet
- Go语言实现set
- Java中Set集合的遍历及实现类比较分析
- Java学习疑点(6)--Set集合添加元素时底层如何实现无重复元素?
- java集合之间的关系及实现细节(1)——Set与Map
- Java 7之集合类型第6篇 - Set集合的实现
- Java集合架构--Set接口的几个具体实现类
- Set集合实现元素不重复原理