diff --git a/readme.md b/readme.md index 2bf34e2..4012ed9 100644 --- a/readme.md +++ b/readme.md @@ -18,4 +18,6 @@ 2020/5/6 : 创建ArrayUtils测试类,修改对应方法 -2020/5/7 : 创建timed包相关时间操作工具,实现时间戳、时间格式化操作。创建timed测试类 \ No newline at end of file +2020/5/7 : 创建timed包相关时间操作工具,实现时间戳、时间格式化操作。创建timed测试类 + +2020/6/15: 创建Set,实现相关方法 \ No newline at end of file diff --git a/test/set/Set_test.go b/test/set/Set_test.go new file mode 100644 index 0000000..f092be5 --- /dev/null +++ b/test/set/Set_test.go @@ -0,0 +1,30 @@ +/* + * @Author : huangzj + * @Time : 2020/6/15 17:17 + * @Description: + */ + +package set + +import ( + set2 "Go-Tool/util/set" + "fmt" + "testing" +) + +func TestSet(t *testing.T) { + set := new(set2.Set) + set.Add(1) + set.Add(2) + set.Add("123") + fmt.Println(set.Contains(3)) + fmt.Println(set.Contains("456")) + fmt.Println(set.Contains("123")) + fmt.Println(set.Contains(1)) + + set.Remove(1) + set.Remove(3) + for _, v := range set.GetAllSet() { + fmt.Println(v) + } +} diff --git a/util/set/Set.go b/util/set/Set.go new file mode 100644 index 0000000..ad3cc43 --- /dev/null +++ b/util/set/Set.go @@ -0,0 +1,44 @@ +/* + * @Author : huangzj + * @Time : 2020/6/15 16:16 + * @Description: + */ + +package set + +import "sync" + +type Set struct { + setMap sync.Map //用来存储元素的map +} + +func (set *Set) Add(i interface{}) { + set.setMap.Store(i, nil) +} + +func (set *Set) Remove(i interface{}) { + set.setMap.Delete(i) +} + +func (set *Set) Contains(i interface{}) bool { + _, has := set.setMap.Load(i) + return has +} + +func (set *Set) IsEmpty() bool { + length := 0 + set.setMap.Range(func(key, value interface{}) bool { + length = length + 1 + return true + }) + return length == 0 +} + +func (set *Set) GetAllSet() []interface{} { + list := make([]interface{}, 0) + set.setMap.Range(func(key, value interface{}) bool { + list = append(list, key) + return true + }) + return list +}