feat(Go-Tool): 创建Set,实现相关方法
This commit is contained in:
@@ -19,3 +19,5 @@
|
|||||||
2020/5/6 : 创建ArrayUtils测试类,修改对应方法
|
2020/5/6 : 创建ArrayUtils测试类,修改对应方法
|
||||||
|
|
||||||
2020/5/7 : 创建timed包相关时间操作工具,实现时间戳、时间格式化操作。创建timed测试类
|
2020/5/7 : 创建timed包相关时间操作工具,实现时间戳、时间格式化操作。创建timed测试类
|
||||||
|
|
||||||
|
2020/6/15: 创建Set,实现相关方法
|
||||||
@@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user